Wir haben in einer vorherigen Lektion bereits das Schlüsselwort DISTINCT kennen gelernt. Damit wurde erreicht, dass im Ergebnis unserer Abfrage keine Duplikate vorhanden sind. Dieses Verhalten können wir auch mit der GROUP BY-Klausel erreichen. Hierbei werden Datensätze mit dem gleichen Werten in den angegebenen Spalten zusammengefasst.
Abfrage mit DISTINCT
SELECT DISTINCT assignee, project FROM tasks;
Abfrage mit GROUP BY
SELECT assignee, project FROM tasks GROUP BY assignee, project;
Der Vorteil der Zusammenfassung mit GROUP BY besteht darin, dass auch Berechnungen über die anderen, nicht in der GROUP BY genannten Spalten, durchgeführt werden können. Beispielsweise können wir die Abfrage oben erweitern und mit der Aggregatfunktion SUM( ) die Summe des Aufwands pro Bearbeiter und Projekt ermitteln:
Beispiel
Weitere Aggregatfunktionen
Die folgenden Aggregatfunktionen berechnen pro Gruppierung, d.h. pro unterschiedlicher Kombination aus den Spalten in der GROUP BY-Klausel:
Aggregatfunktion | Beschreibung |
---|---|
SUM(<Spalte>) | Die Summe über die Werte einer Spalte |
MAX(<Spalte>) | Den jeweils größten Wert in der Spalte, wobei das Maximum passend zum Datentyp berechnet wird |
MIN(<Spalte>) | Analog zu MAX( ) der kleinste Wert |
AVG(<Spalte>) | Der Durchschnittswert, nur für numerische Spalten |
COUNT(*) | Anzahl der Datensätze in der Gruppierung |
COUNT(DISTINCT <Spalte>) | Anzahl der unterschiedlichen Ausprägungen der Spalte in der Gruppierung |
COUNT(<Spalte>) | Anzahl der nicht-NULL Werte der Spalte in der Gruppierung |