COALESCE für NULL-Werte
Teil des Abschnitts Über die Grundlagen hinaus der SQL-Journey von Coddy. Lektion 3 von 27.
COALESCE gibt das erste Argument zurück, das nicht NULL ist:
COALESCE(nickname, first_name, 'Anonymous')Liest von links nach rechts und stoppt beim ersten Nicht-Null-Wert. Dies ist die sauberste Möglichkeit, einen Ersatzwert in einer Abfrage bereitzustellen, ohne dass CASE erforderlich ist.
Häufige Verwendungen:
0anstelle vonNULLaus einemLEFT JOINanzeigen:COALESCE(SUM(amount), 0)- Das erste nicht leere optionale Feld auswählen:
COALESCE(mobile, home, work)
Aufgabe
EinfachVerfügbare Tabellen und Spalten:
users:id,display_name,orders:user_id,amount
Gib eine Zeile pro Benutzer zurück mit:
idlabel:display_name, wenn gesetzt, andernfallsemail, andernfalls'unknown'total_spent: Summe deramount-Werte der Bestellungen des Benutzers; Benutzer ohne Bestellungen sollen0anzeigen (nichtNULL)
Sortiere nach id. Hinweis: Ein LEFT JOIN von users zu orders zusammen mit COALESCE(SUM(...), 0) behandelt die fehlenden Zeilen.
Probier es selbst
SELECT u.id,
-- label über COALESCE
-- total_spent über COALESCE(SUM(...), 0)
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.id
ORDER BY u.id
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Über die Grundlagen hinaus
1Bedingte Logik
CASE WHENCASE in ORDER BYCOALESCE für NULL-WerteNULLIF und IIFRückblick – AnwesenheitÜbe selbstständig: SQL-Playground