#mysql #sql #relational-database
Вопрос:
Мне нужна ваша помощь в SQL-запросе, где в приведенном ниже примере таблицы мне просто нужны две строки, в которых не установлен обязательный флаг Y. Значение этих двух строк должно иметь (Цена*%, взимаемая) (сумма (Цена)* (%, взимаемая) строк, для которых требуется установить флаг Y)
Имя | Цена | % Взимаемых сборов | Требуемый |
---|---|---|---|
Двуспальная Кровать | 10000 | 120 | |
Двуспальная кровать | 24000 | 140 | |
Доставка | 240 | 140 | Y |
Плата за носильщика | 20 | 20 | Y |
Мой результат должен выглядеть примерно так
Имя | Ценности |
---|---|
Двуспальная Кровать | (10000 * 120) (240 * 140) (20 * 20) |
Двуспальная кровать | (24000 * 140) (240 * 140) (20 * 20) |
Я даже не знаю, с чего начать. Дайте мне знать, если потребуется какая-либо информация. Заранее спасибо.
Ответ №1:
SELECT t1.Name, t1.Price * t1.Levied t3.CommonPayment Values FROM table t1 CROSS JOIN ( SELECT SUM(t2.Price * t2.Levied) CommonPayment FROM table t2 WHERE t2.Required = 'Y' ) t3 WHERE t1.Required lt;gt; 'Y'
Ответ №2:
Попробуйте что-нибудь вроде этого
with required_rows as ( select Price * '% Levied' as 'add_on_price' from my_table where Required = 'Y' ), sum_required_rows as ( select sum (add_on_price) as total_add_on_price from required_rows ), select Name, Price, % Levied, ((Price * '% Levied') total_add_on_price) as final_price from my_table inner join sum_required_rows on 1=1 where Required != 'Y'