Аналитик пишет: SELECT clicks / NULLIF(views, 0) AS ctr FROM campaigns. Зачем здесь используется NULLIF(views, 0)?

AВыражение NULLIF вернёт NULL вместо views, если views равен 0, и тогда деление даст NULL, а не ошибку.
BВыражение NULLIF заменит NULL в столбце views на 0, чтобы деление всегда возвращало конкретное число.
CВыражение NULLIF вернёт 0 вместо views, если views равен NULL, чтобы обеспечить безопасное деление.
DВыражение NULLIF вернёт ошибку, если views равен 0, чтобы заранее предотвратить некорректный расчёт ctr.
Правильный ответ. NULLIF(a, b) возвращает NULL, если a = b, иначе возвращает a. Это защищает от деления на ноль.

Разбор

NULLIF(views, 0) вернёт NULL, если views равен 0, и само значение views в остальных случаях. Деление на NULL в SQL возвращает NULL (а не ошибку), поэтому строки с нулём просмотров получат NULL в столбце ctr вместо ошибки деления на ноль. Это стандартный защитный паттерн при расчёте метрик.

Проверь себя · 1/3разбор после ответа
В таблице заказов поле cancelled_at заполняется только для отменённых заказов, а для активных оно равно NULL. Какой фильтр выберет именно активные (не отменённые) заказы?
Тренировать SQL в Telegram

Ещё вопросы по теме «Основы SQL-запросов»