Gruppieren und Aggregieren

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:

AggregatfunktionBeschreibung
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
Die wichtigsten Aggregatfunktionen