Суммирование значений некоторых строк и добавление их к значениям других строк

#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'