COALESCE для NULL
Часть раздела Продвинутый уровень путешествия по SQL на Coddy. Урок 3 из 27.
COALESCE возвращает первый аргумент, который не является NULL:
COALESCE(nickname, first_name, 'Anonymous')Читает слева направо и останавливается на первом значении, отличном от null. Это самый чистый способ указать резервное значение в запросе, без необходимости в CASE.
Распространённые случаи использования:
- Показывать
0вместоNULLпри использованииLEFT JOIN:COALESCE(SUM(amount), 0) - Выбирать первое необязательное поле, не являющееся пустым:
COALESCE(mobile, home, work)
Задание
ЛегкоДоступные таблицы и столбцы:
users:id,display_name,orders:user_id,amount
Верните одну строку для каждого пользователя со следующими данными:
idlabel:display_name, если задано, иначеemail, иначе'unknown'total_spent: сумма значенийamountзаказов пользователя; для пользователей без заказов должно отображаться0(а неNULL)
Отсортируйте по id. Подсказка: LEFT JOIN от users к orders вместе с COALESCE(SUM(...), 0) обрабатывает отсутствующие строки.
Попробуйте сами
SELECT u.id,
-- label через COALESCE
-- total_spent через COALESCE(SUM(...), 0)
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.id
ORDER BY u.id
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Продвинутый уровень
Потренируйтесь самостоятельно: Песочница SQL