SQL-Fall mit der Sum- und Group-By-Klausel

Sql Fall Mit Der Sum Und Group By Klausel



In diesem Tutorial lernen wir, wie man die CASE-Anweisung mit der SUM-Funktion und einer GROUP BY-Klausel verwendet.

Dieses Tutorial behandelt nicht die Grundlagen der Arbeit mit der SQL-Case-Anweisung, der sum()-Funktion oder der GROUP BY-Klausel. Wenn Sie auf der Suche nach den Grundlagen dieser SQL-Funktionen sind, sehen Sie sich unsere Tutorials zu den jeweiligen Themen an, um weitere Informationen zu erhalten.







Problem:

Nehmen wir an, wir haben eine Tabelle mit dem Namen „Bestellungen“ und möchten den Gesamtumsatz für jeden Kunden erhalten, der nach Kunden-ID gruppiert ist, aber wir möchten auch einen Rabatt für Kunden berechnen, die mehr als zwei Bestellungen aufgegeben haben.



Die Tabelle ist im Folgenden dargestellt:



TISCHBestellungen ERSTELLEN (
order_id INT PRIMARY KEY,
customer_id INT,
Produkt_ID INT,
order_date DATUM,
Menge INT,
Preis DEZIMAL ( 10 , 2 )
) ;


Fügen Sie Beispieldaten wie im Folgenden gezeigt in die Tabelle ein:





IN Bestellungen EINFÜGEN ( Bestell-ID, Kunden-ID, Produkt-ID, Bestelldatum, Menge, Preis )
WERTE
( 1 , 101 , 1 , '01.04.2022' , 2 , 10,99 ) ,
( 2 , 102 , 2 , '01.04.2022' , 1 , 19,99 ) ,
( 3 , 103 , 1 , '02.04.2022' , 3 , 8,99 ) ,
( 4 , 101 , 3 , '03.04.2022' , 2 , 15,99 ) ,
( 5 , 102 , 1 , '03.04.2022' , 1 , 12,99 ) ,
( 6 , 104 , 2 , '04.04.2022' , 4 , 7,99 ) ,
( 7 , 103 , 3 , '05.04.2022' , 2 , 21,99 ) ,
( 8 , 101 , 2 , '06.04.2022' , 1 , 18,99 ) ,
( 9 , 104 , 1 , '07.04.2022' , 2 , 9,99 ) ,
( 10 , 102 , 3 , '07.04.2022' , 3 , 14,99 ) ;


Dadurch sollte eine Tabelle wie folgt erstellt werden:



SQL-Fall mit der Sum- und Group-By-Klausel

Um die Gesamtverkäufe für jeden nach ID gruppierten Kunden abzurufen und den Rabatt für Kunden zu berechnen, die mehr als zwei Bestellungen aufgegeben haben, können wir die CASE-Anweisung in Verbindung mit der SUM- und GROUP BY-Klausel verwenden, wie im Folgenden gezeigt:

wählen Aufträge.Kunden_ID, Summe ( Bestellungen.Menge * Bestellungen.Preis * ( Fall wenn zählen ( * ) > 2 Dann 0,9 anders 1 Ende ) ) als total_sales aus Bestellungen;


Im angegebenen Beispiel verwenden wir die SQL-CASE-Anweisung, um zu prüfen, ob der Kunde mehr als zwei Bestellungen aufgegeben hat.

Wenn ein Kunde mehr als zwei Bestellungen aufgegeben hat, multiplizieren wir den Gesamtumsatz mit 0,9, was einen Rabatt von 10 % ergibt.

Abschluss

Wir haben besprochen, wie wir die SQL CASE-Anweisung mit der SUM()- und GROUP BY-Klausel verwenden können.