🧺Aggregation und GROUP BY

Aggregatfunktionen (COUNT, SUM, AVG, MIN, MAX) machen aus vielen Zeilen eine. GROUP BY legt fest, welche Zeilen zusammengefasst werden: alle mit gleichem Wert in den Gruppierungsspalten.

GROUP BY
Aggregat
Phase 1FROM buecher – alle Zeilen
Nebel über Lund· Krimi · 12.99
Die stille Brücke· Krimi · 14.5
Salz und Sterne· Roman · 18
Kartografie des Windes· Roman · 22
Der Garten der Zahlen· Sachbuch · 24.9
Lagos bei Nacht· Roman · 16.8
SQL für Neugierige· Sachbuch · 29.9
Datenflüsse· Sachbuch · 34
Kirschblüten im Schnee· Roman · 15
Das Rätsel von Kyoto· Krimi · 13.9
Volkslieder aus alter Zeit· Lyrik · 9.9
Tagebuch eines Algorithmus· NULL · NULL
Schritt 1 / 4 · Tasten ← →
SELECT genre, COUNT(*)
FROM buecher
GROUP BY genre;

12 Bücher, noch ungeordnet. Hinter jedem Titel stehen der Gruppierungswert und der Preis.

🚫Die häufigsten Fehler

⚠️ Spalte weder gruppiert noch aggregiert
SELECT genre, titel, COUNT(*) … GROUP BY genre – welcher Titel soll pro Genre erscheinen? PostgreSQL und SQL Server melden einen Fehler, MySQL mit ONLY_FULL_GROUP_BY ebenfalls. SQLite liefert stillschweigend irgendeinen Titel.
⚠️ Aggregat im WHERE
WHERE COUNT(*) > 2 ist verboten: WHERE läuft vor dem Gruppieren. Dafür gibt es HAVING.
💡 COUNT(DISTINCT …)
Nach JOINs sind Zeilen oft vervielfacht. COUNT(DISTINCT o.bestell_id) zählt jede Bestellung nur einmal.

🧪Ausprobieren

SQL-Engine wird geladen …