SQL gadījums ar summu un grupēt pēc klauzulas

Sql Gadijums Ar Summu Un Grupet Pec Klauzulas



Šajā apmācībā mēs uzzināsim, kā izmantot CASE priekšrakstu ar funkciju SUM un klauzulu GROUP BY.

Šajā apmācībā nav apskatīti pamati darbam ar SQL Case priekšrakstu, funkciju sum() vai klauzulu GROUP BY. Ja meklējat šo SQL līdzekļu pamatus, skatiet mūsu apmācības par šīm tēmām, lai uzzinātu vairāk.







Problēma:

Pieņemsim, ka mums ir tabula ar nosaukumu “pasūtījumi” un mēs vēlamies iegūt kopējo pārdošanas apjomu katram klientam, kas ir sagrupēts pēc klienta ID, taču mēs vēlamies arī aprēķināt atlaidi klientiem, kuri veikuši vairāk nekā divus pasūtījumus.



Tabula ir parādīta šādi:



IZVEIDOT TABULA pasūtījumus (
order_id INT PRIMARY KEY,
customer_id INT,
product_id INT,
order_date DATE,
daudzums INT,
cena DECIMĀLĀ ( 10 , 2 )
) ;


Ievietojiet tabulā datu paraugu, kā parādīts tālāk.





INSERT INTO pasūtījumos ( pasūtījuma_id, klienta_id, produkta_id, pasūtījuma_datums, daudzums, cena )
VĒRTĪBAS
( 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 ) ;


Tam vajadzētu izveidot šādu tabulu:



SQL gadījums ar summu un grupēt pēc klauzulas

Lai iegūtu kopējo pārdošanas apjomu katram klientam, kas ir grupēts pēc ID, un aprēķinātu atlaidi klientiem, kuri veikuši vairāk nekā divus pasūtījumus, mēs varam izmantot CASE paziņojumu kopā ar klauzulu SUM un GROUP BY, kā parādīts tālāk.

atlasiet orders.customer_id, summa ( pasūtījumi.daudzums * pasūtījumi.cena * ( lietu kad skaitīt ( * ) > 2 tad 0.9 cits 1 beigas ) ) total_sales no pasūtījumiem;


Dotajā piemērā mēs izmantojam SQL CASE priekšrakstu, lai pārbaudītu, vai klients ir veicis vairāk nekā divus pasūtījumus.

Ja klients ir veicis vairāk nekā divus pasūtījumus, mēs reizinām total_sales ar 0,9, kas piemēro 10% atlaidi.

Secinājums

Mēs apspriedām, kā mēs varam izmantot SQL CASE priekšrakstu ar klauzulu SUM() un GROUP BY.