Что является практическим преимуществом разбиения сложного запроса на шаги через WITH по сравнению с несколькими вложенными подзапросами?

AWITH автоматически делает результаты «точнее», чем вложенные подзапросы.
BWITH запрещает использовать NULL, поэтому меньше ошибок.
CWITH гарантирует, что запрос будет выполняться быстрее.
DWITH позволяет дать шагам имена, переиспользовать их и проверять промежуточные результаты отдельно.
Правильный ответ. WITH улучшает читаемость: вы именуете шаги и можете запускать их по отдельности для проверки.

Разбор

CTE превращает сложную логику в последовательность небольших шагов: фильтрация, обогащение, агрегация. Это снижает когнитивную нагрузку и помогает обнаруживать ошибки раньше (например, неправильную гранулярность или лишние строки). Кроме того, если один и тот же шаг нужен дважды, его можно переиспользовать без копирования условий.

Проверь себя · 1/3разбор после ответа
В одном отчёте вы считаете несколько метрик по событиям: dau, wau и число покупок. У всех метрик один и тот же фильтр: только продакшн-трафик и только выбранный период. Какой подход лучше защищает от ситуации, когда в одной метрике забыли часть фильтра?
Тренировать SQL в Telegram

Ещё вопросы по теме «Подзапросы и CTE»