SQL slučaj s klauzulom Sum i Group By

Sql Slucaj S Klauzulom Sum I Group By



U ovom vodiču naučit ćemo kako koristiti naredbu CASE s funkcijom SUM i klauzulom GROUP BY.

Ovaj vodič ne pokriva osnove rada s SQL naredbom Case, funkcijom sum() ili klauzulom GROUP BY. Ako tražite osnove ovih SQL značajki, pogledajte naše vodiče o temama da biste saznali više.







Problem:

Recimo da imamo tablicu pod nazivom 'narudžbe' i želimo dobiti ukupnu prodaju za svakog kupca koji je grupiran prema ID-u kupca, ali također želimo izračunati popust za kupce koji su izvršili više od dvije narudžbe.



Tablica je prikazana u nastavku:



STVARANJE TABLICE naloga (
order_id INT PRIMARNI KLJUČ,
customer_id INT,
product_id INT,
datum_narudžbe DATE,
količina INT,
cijena DECIMALNA ( 10 , 2 )
) ;


Umetnite ogledne podatke u tablicu kao što je prikazano u nastavku:





UMETNUTI U narudžbe ( order_id, customer_id, product_id, order_date, količina, cijena )
VRIJEDNOSTI
( 1 , 101 , 1 , '2022-04-01' , 2 , 10.99 ) ,
( 2 , 102 , 2 , '2022-04-01' , 1 , 19.99 ) ,
( 3 , 103 , 1 , '2. travnja 2022.' , 3 , 8.99 ) ,
( 4 , 101 , 3 , '2022-03-03' , 2 , 15.99 ) ,
( 5 , 102 , 1 , '2022-03-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 ) ;


Ovo bi trebalo stvoriti tablicu na sljedeći način:



SQL slučaj s klauzulom Sum i Group By

Da bismo dohvatili ukupnu prodaju za svakog kupca koji je grupiran po ID-u i izračunali popust za kupce koji su izvršili više od dvije narudžbe, možemo koristiti naredbu CASE u kombinaciji s klauzulom SUM i GROUP BY kao što je prikazano u nastavku:

Izaberi orders.customer_id, iznos ( narudžbe.količina * narudžbe.cijena * ( slučaj kad brojim ( * ) > 2 zatim 0.9 drugo 1 kraj ) ) kao ukupna_prodaja iz narudžbi;


U navedenom primjeru koristimo SQL CASE naredbu da provjerimo je li kupac poslao više od dvije narudžbe.

Ako je kupac izvršio više od dvije narudžbe, množimo total_sales s 0,9 čime se primjenjuje popust od 10%.

Zaključak

Razgovarali smo o tome kako možemo koristiti SQL CASE naredbu sa SUM() i GROUP BY klauzulom.