Aggregatfunktionen
Eine Aggregatfunktion fasst viele Werte zu einem einzigen zusammen.
| Funktion | Ergebnis |
|---|---|
COUNT(*) |
Anzahl der Zeilen |
COUNT(spalte) |
Anzahl der Zeilen mit einem Wert in dieser Spalte |
COUNT(DISTINCT spalte) |
Anzahl der verschiedenen Werte |
SUM(spalte) |
Summe |
AVG(spalte) |
Mittelwert |
MIN(spalte) / MAX(spalte) |
kleinster / größter Wert |
Eine Abfrage mit Aggregatfunktion liefert eine einzige Zeile – egal wie viele Zeilen die Tabelle hat.
Zählen ist nicht gleich zählen
a) Führe die Abfrage aus. Welche drei Zahlen kommen heraus?
b) Erkläre, warum die dritte kleiner ist als die ersten beiden.
c) Wie viele verschiedene Instrumente werden in mitgliedschaft genannt, und wie viele Einträge gibt es insgesamt?
Aggregatfunktionen mit WHERE
WHERE wirkt vor der Aggregation – es entscheidet, welche Zeilen überhaupt eingerechnet werden.
Aggregatfunktionen mit Verbund
Ein häufiger Denkfehler
Was liefert diese Abfrage – und ergibt das Sinn?
SELECT name, MAX(zuschauer) FROM auftritt;
Tipp
Die Aggregatfunktion liefert eine Zeile. Woher soll der zugehörige name kommen, wenn es 46 Zeilen gab?
Auflösung
Die Abfrage ist in dieser Datenbank ohnehin fehlerhaft, weil auftritt gar keine Spalte name hat. Aber auch mit einer vorhandenen Spalte wäre sie problematisch:
MAX(zuschauer) fasst alle 46 Zeilen zu einer zusammen. Ein einzelner Spaltenwert daneben ist dann nicht mehr definiert – zu welcher der 46 Zeilen sollte er gehören?
Manche Datenbanksysteme lehnen so etwas ab, andere liefern irgendeinen Wert. SQLite gehört zur zweiten Sorte, und das ist tückisch: Man bekommt ein Ergebnis, das plausibel aussieht und falsch sein kann.
Der saubere Weg führt über eine Unterabfrage – die lernst du in Lektion 4 kennen.
Faustregel: Sobald eine Aggregatfunktion in der SELECT-Liste steht, darf dort keine gewöhnliche Spalte mehr stehen – es sei denn, sie steht auch im GROUP BY. Was das heißt, klärt die nächste Lektion.
Aufgaben
a) Wie viele Personen sind in der Datenbank erfasst?
b) Wie viele Stunden Musik gibt es insgesamt? Rechne aus dauer_min in Stunden um und runde auf eine Nachkommastelle.
c) Wie hoch war der Gesamtumsatz aus Tickets, und wie viele Tickets wurden verkauft?
d) Wie viele verschiedene Bands sind am 18. Juli 2026 aufgetreten?
Tipp: zu b)
Erst summieren, dann teilen – und daran denken, dass 60 eine ganze Zahl ist.