SQL-case met de som en groeperen op clausule

Sql Case Met De Som En Groeperen Op Clausule



In deze tutorial leren we hoe we de CASE-instructie kunnen gebruiken met de SUM-functie en een GROUP BY-component.

Deze zelfstudie behandelt niet de grondbeginselen van het werken met SQL Case-instructie, de functie sum() of de GROUP BY-component. Als u op zoek bent naar de basis van deze SQL-functies, bekijk dan onze tutorials over de onderwerpen om verder te ontdekken.







Probleem:

Laten we zeggen dat we een tabel met de naam 'bestellingen' hebben en dat we de totale verkoop willen krijgen voor elke klant die is gegroepeerd op klant-ID, maar we willen ook een korting berekenen voor klanten die meer dan twee bestellingen hebben geplaatst.



De tabel wordt als volgt weergegeven:



MAAK TAFEL bestellingen (
order_id INT PRIMAIRE SLEUTEL,
klant_id INT,
product_id INT,
besteldatum DATUM,
hoeveelheid INT,
prijs DECIMAAL ( 10 , 2 )
) ;


Voeg voorbeeldgegevens in de tabel in zoals hieronder weergegeven:





INSERT IN bestellingen ( order_id, customer_id, product_id, order_date, hoeveelheid, prijs )
WAARDEN
( 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 ) ;


Dit zou als volgt een tabel moeten maken:



SQL-case met de som en groeperen op clausule

Om de totale verkoop op te halen voor elke klant die is gegroepeerd op ID en de korting te berekenen voor klanten die meer dan twee bestellingen hebben geplaatst, kunnen we de CASE-instructie gebruiken in combinatie met de SUM- en GROUP BY-clausule, zoals hieronder weergegeven:

selecteren bestellingen.klant_id, som ( bestellingen.hoeveelheid * bestellingen.prijs * ( geval wanneer tellen ( * ) > 2 Dan 0.9 anders 1 einde ) ) als totale_verkoop van bestellingen;


In het gegeven voorbeeld gebruiken we de SQL CASE-instructie om te controleren of de klant meer dan twee bestellingen heeft geplaatst.

Als een klant meer dan twee bestellingen heeft geplaatst, vermenigvuldigen we de total_sales met 0,9 wat een korting van 10% toepast.

Conclusie

We hebben besproken hoe we de SQL CASE-instructie kunnen gebruiken met de SUM()- en GROUP BY-clausule.