Случай SQL с предложением Sum и Group By

Slucaj Sql S Predlozeniem Sum I Group By



В этом руководстве мы узнаем, как использовать оператор CASE с функцией SUM и предложением GROUP BY.

В этом руководстве не рассматриваются основы работы с оператором SQL Case, функцией sum() или предложением GROUP BY. Если вы ищете основы этих функций SQL, ознакомьтесь с нашими руководствами по темам, чтобы узнать больше.







Проблема:

Допустим, у нас есть таблица с именем «заказы», ​​и мы хотим получить общий объем продаж для каждого клиента, сгруппированного по идентификатору клиента, но мы также хотим рассчитать скидку для клиентов, разместивших более двух заказов.



Таблица представлена ​​в следующем:



СОЗДАТЬ ТАБЛИЧНЫЕ заказы (
order_id INT ПЕРВИЧНЫЙ КЛЮЧ,
идентификатор_клиента INT,
product_id INT,
дата_заказа ДАТА,
количество ИНТ,
цена ДЕСЯТИЧНАЯ ( 10 , 2 )
) ;


Вставьте образец данных в таблицу, как показано ниже:





ВСТАВЛЯТЬ В заказы ( order_id, customer_id, product_id, order_date, количество, цена )
ЦЕННОСТИ
( 1 , 101 , 1 , '2022-04-01' , 2 , 10,99 ) ,
( 2 , 102 , 2 , '2022-04-01' , 1 , 19,99 ) ,
( 3 , 103 , 1 , '2022-04-02' , 3 , 8,99 ) ,
( 4 , 101 , 3 , '2022-04-03' , 2 , 15,99 ) ,
( 5 , 102 , 1 , '2022-04-03' , 1 , 12,99 ) ,
( 6 , 104 , 2 , '2022-04-04' , 4 , 7,99 ) ,
( 7 , 103 , 3 , '2022-04-05' , 2 , 21,99 ) ,
( 8 , 101 , 2 , '2022-04-06' , 1 , 18,99 ) ,
( 9 , 104 , 1 , '2022-04-07' , 2 , 9,99 ) ,
( 10 , 102 , 3 , '2022-04-07' , 3 , 14,99 ) ;


Это должно создать таблицу следующим образом:



Случай SQL с предложением Sum и Group By

Чтобы получить общий объем продаж для каждого клиента, сгруппированного по идентификатору, и рассчитать скидку для клиентов, разместивших более двух заказов, мы можем использовать оператор CASE в сочетании с предложением SUM и GROUP BY, как показано ниже:

выбирать заказы.customer_id, сумма ( заказы.количество * заказы.цена * ( случай когда считать ( * ) > 2 затем 0,9 еще 1 конец ) ) как total_sales от заказов;


В данном примере мы используем оператор SQL CASE, чтобы проверить, разместил ли клиент более двух заказов.

Если клиент разместил более двух заказов, мы умножаем total_sales на 0,9, что дает скидку 10%.

Заключение

Мы обсудили, как можно использовать SQL-оператор CASE с предложениями SUM() и GROUP BY.