COALESCE dla wartości NULL
Część sekcji Poza podstawami ścieżki SQL w Coddy. Lekcja 3 z 27.
COALESCE zwraca pierwszy argument, który nie jest NULL:
COALESCE(nickname, first_name, 'Anonymous')Odczytuje wartości od lewej do prawej i zatrzymuje się na pierwszej niebędącej wartością null. To najprostszy sposób na podanie wartości zapasowej w zapytaniu, bez potrzeby używania CASE.
Typowe zastosowania:
- Wyświetl
0zamiastNULLzLEFT JOIN:COALESCE(SUM(amount), 0) - Wybierz pierwsze niepuste pole opcjonalne:
COALESCE(mobile, home, work)
Wyzwanie
ŁatwyDostępne tabele i kolumny:
users:id,display_name,orders:user_id,amount
Zwróć jeden wiersz na użytkownika zawierający:
idlabel:display_name, jeśli jest ustawione, w przeciwnym razieemail, a jeśli nie,'unknown'total_spent: suma wartościamountzamówień użytkownika; dla użytkowników bez zamówień powinna być wyświetlana wartość0(nieNULL)
Sortuj według id. Podpowiedź: LEFT JOIN tabeli users z tabelą orders oraz COALESCE(SUM(...), 0) obsługują brakujące wiersze.
Spróbuj swoich sił
SELECT u.id,
-- label za pomocą COALESCE
-- total_spent za pomocą COALESCE(SUM(...), 0)
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.id
ORDER BY u.id
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Poza podstawami
Poćwicz samodzielnie: Edytor online SQL