🧺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 …