Вы хотите заменить NULL в столбце источника перехода на значение 'direct'. Какой вариант записан корректно и эквивалентен по смыслу?

ACASE WHEN referrer IS NULL THEN 'direct' ELSE referrer END и COALESCE(referrer, 'direct')
BCASE WHEN referrer = NULL THEN 'direct' ELSE referrer END и COALESCE(referrer, 'direct')
CCASE WHEN referrer IS NULL THEN 'direct' ELSE referrer END и COALESCE('direct', referrer)
DCASE WHEN referrer IS NOT NULL THEN 'direct' ELSE referrer END и COALESCE(referrer, 'direct')
Правильный ответ. COALESCE(referrer, 'direct') — короткая запись «если значение NULL, подставь значение по умолчанию».

Разбор

Логика «подставь значение по умолчанию при NULL» записывается через CASE WHEN ... IS NULL, но COALESCE(referrer, 'direct') обычно короче и читабельнее. Запись referrer = NULL некорректна и всегда даёт UNKNOWN — для проверки на пропуск используют IS NULL. Порядок аргументов в COALESCE важен: функция возвращает первый не-NULL слева направо, поэтому COALESCE('direct', referrer) всегда вернёт 'direct' и не выполнит замену. Условие IS NOT NULL тоже меняет смысл — оно подставит 'direct' именно туда, где значение есть.

Можно заниматься бесплатно

Готовим вопросы…

Три вопроса по теме этой страницы, с объяснениями.

Продолжить в браузере

Ещё вопросы по теме «Выражения и NULL»