Primer SQL s klavzulo Sum in Group By

Primer Sql S Klavzulo Sum In Group By



V tej vadnici se bomo naučili uporabljati stavek CASE s funkcijo SUM in klavzulo GROUP BY.

Ta vadnica ne pokriva osnov dela s stavkom SQL Case, funkcijo sum() ali klavzulo GROUP BY. Če iščete osnove teh funkcij SQL, si oglejte naše vadnice o temah, da odkrijete več.







Težava:

Recimo, da imamo tabelo z imenom »naročila« in želimo pridobiti skupno prodajo za vsako stranko, ki je razvrščena po ID-ju stranke, vendar želimo izračunati tudi popust za stranke, ki so oddale več kot dve naročili.



Tabela je prikazana na naslednji način:



USTVARITE naročila TABLE (
order_id INT PRIMARNI KLJUČ,
customer_id INT,
product_id INT,
datum_naročila DATE,
količina INT,
cena DECIMAL ( 10 , 2 )
) ;


V tabelo vstavite vzorčne podatke, kot je prikazano spodaj:





VSTAVITE V naročila ( order_id, customer_id, product_id, order_date, količina, cena )
VREDNOTE
( 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 bi moralo ustvariti tabelo, kot sledi:



Primer SQL s klavzulo Sum in Group By

Za pridobitev celotne prodaje za vsako stranko, ki je razvrščena po ID-ju, in izračun popusta za stranke, ki so oddale več kot dve naročili, lahko uporabimo stavek CASE v povezavi s klavzulo SUM in GROUP BY, kot je prikazano v nadaljevanju:

izberite orders.customer_id, vsota ( naročila.količina * naročila.cena * ( Ovitek ko štejejo ( * ) > 2 potem 0,9 drugače 1 konec ) ) kot skupna_prodaja iz naročil;


V danem primeru uporabimo stavek SQL CASE, da preverimo, ali je stranka oddala več kot dve naročili.

Če je stranka oddala več kot dve naročili, skupno prodajo pomnožimo z 0,9, kar pomeni 10-odstotni popust.

Zaključek

Razpravljali smo o tem, kako lahko uporabimo stavek SQL CASE s stavkoma SUM() in GROUP BY.