Prípad SQL so súčtom a zoskupením podľa klauzuly

Pripad Sql So Suctom A Zoskupenim Podla Klauzuly



V tomto návode sa naučíme používať príkaz CASE s funkciou SUM a klauzulou GROUP BY.

Tento tutoriál nepokrýva základy práce s príkazom SQL Case, funkciou sum() ani klauzulou GROUP BY. Ak hľadáte základy týchto funkcií SQL, pozrite si naše výukové programy k témam, kde sa dozviete viac.







problém:

Povedzme, že máme tabuľku s názvom „objednávky“ a chceme získať celkové tržby pre každého zákazníka, ktorý je zoskupený podľa ID zákazníka, ale chceme tiež vypočítať zľavu pre zákazníkov, ktorí zadali viac ako dve objednávky.



Tabuľka je znázornená nasledovne:



VYTVORENIE TABUĽKY objednávky (
order_id INT PRIMÁRNY KĽÚČ,
customer_id INT,
product_id INT,
order_date DATE,
množstvo INT,
cena DECIMÁLNA ( 10 , 2 )
) ;


Vložte vzorové údaje do tabuľky, ako je znázornené na nasledujúcom obrázku:





VLOŽIŤ DO OBJEDNÁVKY ( order_id, customer_id, product_id, order_date, Množstvo, cena )
HODNOTY
( 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 ) ;


To by malo vytvoriť tabuľku nasledovne:



Prípad SQL so súčtom a zoskupením podľa klauzuly

Na načítanie celkového predaja pre každého zákazníka, ktorý je zoskupený podľa ID, a na výpočet zľavy pre zákazníkov, ktorí zadali viac ako dve objednávky, môžeme použiť príkaz CASE v spojení s klauzulou SUM a GROUP BY, ako je uvedené nižšie:

vyberte orders.customer_id, súčet ( objednávky.množstvo * objednávky.cena * ( prípad keď počítať ( * ) > 2 potom 0,9 inak 1 koniec ) ) ako celkový_predaj z objednávok;


V uvedenom príklade používame príkaz SQL CASE na kontrolu, či zákazník zadal viac ako dve objednávky.

Ak zákazník zadal viac ako dve objednávky, celkový predaj vynásobíme 0,9, čím sa uplatní zľava 10 %.

Záver

Diskutovali sme o tom, ako môžeme použiť príkaz SQL CASE s klauzulou SUM() a GROUP BY.