Gruppierung Tutorial

Gruppierung

Die Gruppierung in SQL ermöglicht es, Zeilen gruppenweise zusammenzufassen. Aggregatfunktionen (unten beschrieben) erlauben dann weitere Aktionen darauf. Wollen wir zum Beispiel herausfinden, wie viele Bestellungen jeder einzelne Kunde getätigt hat, ist das mit dem aktuellen Wissensstand mit einer Abfrage nicht möglich.

Die Gruppierung funktioniert in SQL mit dem Schlüsselwort GROUP BY. Im SELECT können, wenn ein GROUP BY verwendet wird, nur mehr Spalten angegeben werden, nach denen in der GROUP BY-Klausel gruppiert wurde, außer, die Spalten werden innerhalb einer Aggregatfunktion verwendet. Ein Beispiel für eine SQL Abfrage mit einer Gruppierung: 

SELECT articleId, name, COUNT (*) AS Bestellungen
FROM article INNER JOIN orderarticle ON id = articleId
GROUP BY articleId, name;

Die Ausgabe sieht dann folgendermaßen aus:

Ausgabe der Abfrage


In diesem Beispiel wurde bereits die Aggregatfunktion COUNT verwendet. Es wird zuerst nach der ID des Artikel und dessen Name gruppiert und anschließend werden mit COUNT alle Einträge (= Bestellungen) gezählt. Bei COUNT kann man in der Klammer sowohl den * angeben, als auch COUNT(id) verwenden, da die Anzahl der Einträge die Gleiche ist. Bei den Aggregatfunktionen MAX(), MIN(), AVG() und SUM() dagegen, ist es immer wichtig, welche Spalte angegeben wird, da hier die Werte, die in den Feldern stehen, von Bedeutung sind. Wie erwartet, gibt die Funktion MAX() den maximalen Wert innerhalb der Gruppierung zurück, MIN() den minimalen, AVG() berechnet den Durchschnitt und SUM() rechnet alle Werte innerhalb der Gruppierung zusammen.