Beispiel:
SELECT ort, FIXED (AVG(konto),7,2) FROM kunde GROUP BY ort ORDER BY ort
Die Anfrage bestimmt den durchschnittlichen Kontobetrag für jeden Ort (AVG). Da die zweite Spalte der Ergebnistabelle keine vordefinierte Bezeichnung mehr hat, wird vom System die Standardüberschrift EXPRESSION1 gewählt. GROUP BY teilt die Tabelle in Gruppen von Zeilen mit demselben Ortsnamen ein und gibt eine Resultatszeile für jede Gruppe zurück. Zur geordneten Ausgabe der Gruppenergebnisse sollte ORDER BY verwendet werden. GROUP BY sammelt die Ergebnisse gruppenweise, aber ordnet sie nicht unbedingt.
Außer bei 'ort' muß vor jede andere Spalte eine der Funktionen geschrieben werden, deren Anwendung sich auf eine gesamte Spalte einer Zwischenergebnistabelle bezieht. (Solche Funktionen sollen hier auch als Set-Funktionen bezeichnet werden.) 'ort' kann ohne Funktion stehen, weil jedes Element der Gruppe denselben Wert für 'ort' hat.
AVG gehört ebenso wie MIN, MAX, COUNT, SUM, STDDEV und VARIANCE zu den Funktionen, die auf eine gesamte Spalte angewandt werden. Eine genauere Erklärung hierzu ist im nächsten Kapitel zu finden.
GROUP BY liefert im allgemeinen eine Gruppe für jeden unterschiedlichen Wert der zu gruppierenden Spalte.
Es kann nach mehreren Spalten gruppiert werden. Dabei werden wiederum zunächst Gruppen nach dem ersten Kriterium gebildet. Jede dieser Gruppen wird anschließend nach den weiteren Kriterien unterteilt.
Wird GROUP BY verwendet, dann muß es nach FROM und WHERE und vor ORDER BY stehen.
Zeige für jeden Ort das Minimum, den Durchschnitt und das Maximum des Kontostandes aller Kunden:
SELECT ort, MIN(konto) min_konto, FIXED (AVG(konto),7,2) avg_konto, MAX(konto) max_konto FROM kunde GROUP BY ort
Für die berechneten Ergebnisspalten wurden neue Überschriften definiert.
Zeige für jeden Ort außer Berlin das Minimum, den Durchschnitt und das Maximum des Kontostandes:
SELECT ort, MIN(konto) min_konto, FIXED (AVG(konto),7,2) avg_konto, MAX(konto) max_konto FROM kunde WHERE ort <> 'Berlin' GROUP BY ort
Zeige für jeden Ort die Anzahl der Kunden und ihren Gesamtkontostand:
SELECT ort, COUNT(*) anzahl, FIXED (AVG(konto),7,2) avg_konto, SUM(konto) sum_konto FROM kunde GROUP BY ort