COUNT ·
SUM ·
AVG ·
MIN ·
MAX ·
GROUP BY
Aggregatfunktionen fassen viele Zeilen zu einem einzigen Wert zusammen. Sie sind unverzichtbar für Analysen, Berichte und Statistiken in Datenbanken.
COUNT zählt die Anzahl der Zeilen. COUNT(*) zählt alle Zeilen inkl. NULL, COUNT(spalte) zählt nur nicht-NULL-Werte, COUNT(DISTINCT spalte) zählt eindeutige Werte.
| Variante | Beschreibung | Beispiel |
|---|---|---|
| COUNT(*) | Alle Zeilen (inkl. NULL) | SELECT COUNT(*) FROM kunden |
| COUNT(spalte) | Nur Zeilen mit nicht-NULL-Wert | SELECT COUNT(email) FROM kunden |
| COUNT(DISTINCT spalte) | Eindeutige Werte | SELECT COUNT(DISTINCT kategorie) FROM produkte |
| COUNT(1) | Wie COUNT(*) (Performance-Konvention) | SELECT COUNT(1) FROM kunden |
COUNT(*) zählt alle Zeilen, COUNT(spalte) nur nicht-NULL-Werte. Wenn Sie die tatsächliche Anzahl der Datensätze benötigen (inkl. NULL), verwenden Sie COUNT(*).
SUM berechnet die Summe aller Werte einer Spalte. Funktioniert nur mit numerischen Datentypen. NULL-Werte werden ignoriert.
SUM ignoriert NULL-Werte. Wenn alle Werte einer Spalte NULL sind, gibt SUM NULL zurück – verwenden Sie COALESCE(SUM(spalte), 0) für eine 0.
AVG berechnet den Durchschnitt (Mittelwert) aller Werte einer Spalte. Funktioniert nur mit numerischen Datentypen. NULL-Werte werden ignoriert.
AVG ignoriert NULL-Werte. Wenn Sie den Durchschnitt über alle Zeilen inkl. NULL berechnen möchten, müssen Sie NULL durch einen Wert ersetzen (z.B. mit COALESCE(spalte, 0)).
MIN und MAX geben den kleinsten bzw. größten Wert einer Spalte zurück. Sie funktionieren mit numerischen, textuellen und Datumsspalten.
MIN und MAX ignorieren NULL-Werte. Bei Textspalten wird die alphabetische Reihenfolge verwendet (A ist minimal, Z ist maximal).
GROUP BY gruppiert Zeilen mit gleichen Werten und ermöglicht Aggregation pro Gruppe. HAVING filtert die Gruppen (ähnlich wie WHERE für Zeilen).
GROUP BY und HAVING sind mächtig, aber teuer bei großen Datenmengen. Stellen Sie sicher, dass die gruppierten Spalten indiziert sind, um die Performance zu verbessern.
Praxis-Beispiele zeigen die Kombination von Aggregatfunktionen mit GROUP BY für typische Analyse-Aufgaben wie Umsatzberichte, Bestandsanalysen und Auswertungen.
ROW_NUMBER(), RANK() oder LAG() bieten sich Window Functions an – ein fortgeschrittenes Thema für weiterführende Analysen.
COUNT
SUM
AVG
MIN/MAX
GROUP BY
HAVING
SELECT kategorie, COUNT(*), AVG(preis), SUM(bestand) FROM produkte GROUP BY kategorie HAVING COUNT(*) > 5;