SQL-tilfelle med sum og gruppe etter klausul

Sql Tilfelle Med Sum Og Gruppe Etter Klausul



I denne opplæringen lærer vi hvordan du bruker CASE-setningen med SUM-funksjonen og en GROUP BY-klausul.

Denne opplæringen dekker ikke det grunnleggende om å jobbe med verken SQL-tilfellesetning, sum()-funksjonen eller GROUP BY-leddet. Hvis du leter etter det grunnleggende om disse SQL-funksjonene, sjekk veiledningene våre om emnene for å finne ut mer.







Problem:

La oss si at vi har en tabell som heter 'ordrer' og vi ønsker å få det totale salget for hver kunde som er gruppert etter kunde-ID, men vi ønsker også å beregne en rabatt for kunder som har lagt inn mer enn to bestillinger.



Tabellen er vist i følgende:



OPPRETT BORDbestillinger (
order_id INT PRIMARY KEY,
kunde_id INT,
product_id INT,
ordre_dato DATE,
mengde INT,
pris DESIMAL ( 10 , 2 )
) ;


Sett inn et eksempeldata i tabellen som vist i følgende:





LEGG INN I bestillinger ( order_id, customer_id, product_id, order_date, quantity, price )
VERDIER
( 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 ) ;


Dette bør lage en tabell som følger:



SQL-tilfelle med sum og gruppe etter klausul

For å hente det totale salget for hver kunde som er gruppert etter ID og beregne rabatten for kunder som har lagt inn mer enn to bestillinger, kan vi bruke CASE-setningen sammen med SUM- og GROUP BY-klausulen som vist i følgende:

plukke ut orders.customer_id, sum ( ordrer.antall * ordre.pris * ( sak når teller ( * ) > 2 deretter 0,9 ellers 1 slutt ) ) som totalt_salg fra bestillinger;


I det gitte eksemplet bruker vi SQL CASE-setningen for å sjekke om kunden har lagt inn mer enn to bestillinger.

Hvis en kunde har lagt inn mer enn to bestillinger, multipliserer vi total_sales med 0,9 som gir 10 % rabatt.

Konklusjon

Vi diskuterte hvordan vi kan bruke SQL CASE-setningen med SUM() og GROUP BY-leddet.