Häufige Fehler: NULL-Werte in Aggregaten
Vermeiden Sie die klassischen NULL-Fallen: AVG ignoriert NULL-Werte, COUNT(Spalte) überspringt NULL-Werte und Gruppierungen nach nullable Spalten können unerwartete Ergebnisse liefern.
Häufige Fehler: NULL-Werte in Aggregaten ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
Aggregate ignorieren NULL
Jedes Aggregat außer COUNT(*) ignoriert NULL-Eingaben. Das ist manchmal genau das gewünschte Verhalten – und manchmal ein Fehler.
Klassische Falle: COUNT(*) vs. COUNT(col)
Wenn die Spalte NULL-Werte enthält, liefern die beiden Varianten unterschiedliche Ergebnisse:
SELECT COUNT(*) FROM users; -- 1000
SELECT COUNT(email) FROM users; -- 950 (50 users have NULL email)Fehler: AVG zählt NULL nicht als null
Bewertungen [5, 5, NULL] → AVG = 5 und nicht (5+5+0)/3 = 3,33. Entscheiden Sie, ob das Ihren Erwartungen entspricht.
SELECT AVG(rating) FROM reviews; -- 5
SELECT AVG(COALESCE(rating, 0)) FROM reviews; -- 3.33Leere Tabelle = NULL-Aggregat
Wenn keine Zeilen übereinstimmen, geben SUM/AVG/MIN/MAX NULL und nicht 0 zurück. Behandeln Sie das mit COALESCE:
SELECT COALESCE(SUM(total), 0) AS revenue
FROM orders
WHERE user_id = 999999; -- safe even when user has no ordersSUM einer NULL-Spalte
Wenn der Wert in jeder Zeile NULL ist, gibt SUM NULL und nicht 0 zurück. Dieselbe Falle gilt auch hier.
GROUP BY mit NULL als Gruppierungsschlüssel
NULL bildet eine eigene Gruppe:
SELECT country, COUNT(*) FROM users
GROUP BY country;
-- → ('US', 100), ('CA', 30), (NULL, 5)Unterschiedliche Werte mit NULL zählen
COUNT(DISTINCT col) ignoriert NULL-Werte:
INSERT INTO t (c) VALUES (1),(2),(NULL),(NULL),(2);
SELECT COUNT(DISTINCT c) FROM t; -- 2 (NULL not counted)DISTINCT über mehrere Spalten
Ein Tupel mit NULL ist dennoch von einem anderen Tupel mit denselben Nicht-NULL-Spaltenwerten verschieden:
SELECT COUNT(*) FROM (
SELECT DISTINCT a, b FROM t
) sub;Vorsicht bei impliziten Joins mit optionalen Tabellen
Ein LEFT JOIN kann NULL-Werte einführen und dadurch Ihr Aggregat verändern. Entscheiden Sie, ob diese Zeilen gezählt oder herausgefiltert werden sollen:
SELECT u.id, COUNT(o.id) AS orders
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.id; -- COUNT(o.id) gives 0 for users with no ordersFILTER für bedingte Zählungen
FILTER ist besser lesbar als ein CASE innerhalb von SUM:
SELECT COUNT(*) FILTER (WHERE status = 'paid') AS paid_count,
COUNT(*) FILTER (WHERE status = 'refunded') AS refund_count
FROM orders;Aggregate immer mit NULL-Werten testen
Wenn Sie eine neue Aggregatabfrage hinzufügen, führen Sie sie mit Beispieldaten aus, die NULL-Werte enthalten. In sauberen Testdaten tritt dieser Fehler fast nie auf.
Zusammenfassung
NULL plus Aggregat ist der häufigste SQL-Fehler.
- Aggregate überspringen NULL-Werte (außer COUNT(*))
- Leeres Ergebnis → NULL und nicht 0
- Verwenden Sie COALESCE, wenn 0 gewünscht ist
- Prüfen Sie Aggregate über LEFT JOINs sorgfältig
Kurze Verständnisprüfung
Reviews enthält die Bewertungen [5, 5, NULL, 1]. Was gibt AVG(rating) zurück?
Häufig gestellte Fragen
Ist die Lektion „Häufige Fehler: NULL-Werte in Aggregaten“ kostenlos?
Ja — der vollständige Text von „Häufige Fehler: NULL-Werte in Aggregaten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Häufige Fehler: NULL-Werte in Aggregaten“?
Vermeiden Sie die klassischen NULL-Fallen: AVG ignoriert NULL-Werte, COUNT(Spalte) überspringt NULL-Werte und Gruppierungen nach nullable Spalten können unerwartete Ergebnisse liefern. Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um SQL Academy zu starten?
Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Häufige Fehler: NULL-Werte in Aggregaten“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?
Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- COUNT, SUM, AVG, MIN, MAX
- GROUP BY mit einer oder mehreren Spalten
- HAVING vs. WHERE
- Häufige Fehler: NULL-Werte in Aggregaten