1. Wann wird HAVING typischerweise benötigt?
Antwort und Begründung anzeigen
HAVING formuliert Bedingungen auf Gruppen beziehungsweise aggregierten Ergebnissen.
SQL-WISSEN · Auswertung
Wie Aggregatfunktionen mehrere Zeilen zu Kennzahlen verdichten, GROUP BY Gruppen bildet und HAVING Gruppen nach der Aggregation filtert.
Aggregatfunktionen wie COUNT, SUM und AVG verdichten mehrere Eingabezeilen zu Kennzahlen. GROUP BY teilt die Eingabemenge in Gruppen, für die diese Kennzahlen getrennt berechnet werden.
WHERE filtert Eingabezeilen vor der Gruppierung. HAVING filtert Gruppen anhand aggregierter oder gruppenbezogener Bedingungen.
SELECT kunde_id, SUM(betrag) AS umsatz
FROM bestellung
WHERE status = 'bezahlt'
GROUP BY kunde_id
HAVING SUM(betrag) >= 1000
ORDER BY umsatz DESC;
COUNT(*) zählt die Zeilen einer Gruppe. COUNT(spalte) zählt nur die nicht-NULL-Werte der angegebenen Spalte. Deshalb sollte die gewählte Form zur fachlichen Frage passen.
Praxisfall
Aus bezahlten Bestellungen sollen nur Kunden mit mindestens 1.000 Euro Gesamtumsatz erscheinen.
Selbsttest
HAVING formuliert Bedingungen auf Gruppen beziehungsweise aggregierten Ergebnissen.
COUNT(*) zählt Zeilen, während COUNT(spalte) nur nicht-NULL-Werte der angegebenen Spalte zählt.
Transfer
Formulieren Sie für eine Kennzahl aus Ihrem Arbeitsalltag zuerst die fachliche Granularität: pro Kunde, pro Monat, pro Produkt oder insgesamt. Leiten Sie erst danach GROUP BY und Aggregatfunktion ab.
Weiterlernen
Quellen, Prüfstand und Grenzen
Norm-/Standardreferenz
ISO/IEC 9075
Version: ISO/IEC 9075-1:2023
Bezug: SQL-Framework, Begriffe und Standardkontext.
Projekt-Primärdokumentation
SQLite
Version: SQLite 3.53.4
Bezug: COUNT, SUM, AVG und Aggregatfunktionsverhalten.
Projekt-Primärdokumentation
PostgreSQL
Version: PostgreSQL 18
Bezug: GROUP BY, HAVING und Tabellenexpressions-Pipeline.
Hersteller-Primärdokumentation
MySQL
Version: MySQL 8.4 LTS
Bezug: Aggregate Functions, GROUP BY und MySQL-spezifische Regeln.