Případ SQL se součtem a seskupením podle klauzule

Pripad Sql Se Souctem A Seskupenim Podle Klauzule



V tomto tutoriálu se naučíme používat příkaz CASE s funkcí SUM a klauzuli GROUP BY.

Tento kurz nepokrývá základy práce s příkazem SQL Case, funkcí sum() ani klauzuli GROUP BY. Pokud hledáte základy těchto funkcí SQL, podívejte se na naše výukové programy k tématům, kde najdete další informace.







Problém:

Řekněme, že máme tabulku nazvanou „objednávky“ a chceme získat celkové tržby pro každého zákazníka, který je seskupen podle ID zákazníka, ale také chceme vypočítat slevu pro zákazníky, kteří zadali více než dvě objednávky.



Tabulka je zobrazena následovně:



VYTVOŘTE TABULKU objednávky (
order_id INT PRIMÁRNÍ KLÍČ,
customer_id INT,
product_id INT,
datum_objednávky DATE,
množství INT,
cena DECIMAL ( 10 , 2 )
) ;


Vložte ukázková data do tabulky, jak je znázorněno v následujícím:





VLOŽTE DO OBJEDNÁVEK ( order_id, customer_id, product_id, order_date, Množství, 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 mělo vytvořit tabulku takto:



Případ SQL se součtem a seskupením podle klauzule

K načtení celkových prodejů pro každého zákazníka, kteří jsou seskupeni podle ID, a k výpočtu slevy pro zákazníky, kteří zadali více než dvě objednávky, můžeme použít příkaz CASE ve spojení s klauzulemi SUM a GROUP BY, jak je znázorněno v následujícím:

vybrat orders.customer_id, součet ( objednávky.množství * objednávky.cena * ( pouzdro když počítat ( * ) > 2 pak 0,9 jiný 1 konec ) ) tak jako celkový_tržby z objednávek;


V uvedeném příkladu používáme příkaz SQL CASE ke kontrole, zda zákazník zadal více než dvě objednávky.

Pokud zákazník zadal více než dvě objednávky, vynásobíme celkový_prodej hodnotou 0,9, čímž se uplatní sleva 10 %.

Závěr

Diskutovali jsme o tom, jak můžeme použít příkaz SQL CASE s klauzulemi SUM() a GROUP BY.