SQL GROUP BY-Anweisung
- Vorherige Seite SQL sum()
- Nächste Seite SQL Having
Aggregationsfunktionen (z.B. SUM) erfordern oft die Hinzufügung einer GROUP BY-Anweisung.
GROUP BY Anweisung
Die GROUP BY-Anweisung wird verwendet, um Aggregationsfunktionen zu kombinieren und die Ergebnismenge nach einer oder mehreren Spalten zu gruppieren.
SQL GROUP BY Syntax
SELECT Spaltenname, aggregierte Funktion(Spaltenname) FROM Tabellenname WHERE Spaltenname Operator Wert GROUP BY Spaltenname
SQL GROUP BY Beispiel
Wir besitzen die folgende "Orders"-Tabelle:
O_Id | Bestelldatum | Bestellpreis | Kunde |
---|---|---|---|
1 | 2008/12/29 | 1000 | Bush |
2 | 2008/11/23 | 1600 | Carter |
3 | 2008/10/05 | 700 | Bush |
4 | 2008/09/28 | 300 | Bush |
5 | 2008/08/06 | 2000 | Adams |
6 | 2008/07/21 | 100 | Carter |
Jetzt möchten wir die Gesamtsumme der Beträge (Gesamtbestellungen) jedes Kunden finden.
Wir möchten die GROUP BY-Anweisung verwenden, um die Kunden zu kombinieren.
Wir verwenden die folgenden SQL-Anweisungen:
SELECT Kunde, SUM(Bestellpreis) FROM Bestellungen GROUP BY Kunde
Der Ergebnissatz ähnelt dem folgenden:
Kunde | SUM(Bestellpreis) |
---|---|
Bush | 2000 |
Carter | 1700 |
Adams | 2000 |
Toll, nicht wahr?
Lassen Sie uns sehen, was passiert, wenn wir GROUP BY auslassen:
SELECT Kunde, SUM(Bestellpreis) FROM Bestellungen
Der Ergebnissatz ähnelt dem folgenden:
Kunde | SUM(Bestellpreis) |
---|---|
Bush | 5700 |
Carter | 5700 |
Bush | 5700 |
Bush | 5700 |
Adams | 5700 |
Carter | 5700 |
Der obige Ergebnissatz entspricht nicht unseren Anforderungen.
Warum kann man nicht die obige SELECT-Anweisung verwenden? Erklärung: Die obige SELECT-Anweisung spezifiziert zwei Spalten (Kunde und SUM(Bestellpreis)). "SUM(Bestellpreis)" gibt einen einzigen Wert zurück (der Gesamtbetrag der "Bestellpreis"-Spalte), während "Kunde" sechs Werte zurückgibt (jeder Wert entspricht einer Zeile im "Bestellungen"-Tabellen). Daher erhalten wir nicht das richtige Ergebnis. Allerdings haben Sie gesehen, dass die GROUP BY-Anweisung dieses Problem löst.
GROUP BY eine über eine Spalte hinaus
Wir können auch GROUP BY-Anweisungen auf eine über eine Spalte hinaus anwenden, wie zum Beispiel:
SELECT Kunde, Bestelldatum, SUM(Bestellpreis) FROM Bestellungen GROUP BY Kunde, Bestelldatum
- Vorherige Seite SQL sum()
- Nächste Seite SQL Having