Вы считаете метрику: доля пользователей, которые совершили покупку в течение 7 дней после регистрации. Какой вариант построения запроса делает логику наиболее проверяемой и удобной для отладки?

AОдин большой SELECT с несколькими уровнями вложенных подзапросов без отдельных имён шагов
BКоррелированный подзапрос в SELECT, возвращающий 0/1 на пользователя без выделения покупок
CФинальный WITH, в котором фильтры по регистрациям и покупкам собраны в одном подзапросе в FROM
DОтдельные CTE: WITH signups AS (...), purchases AS (...), matched AS (...) с проверкой каждого шага
Правильный ответ. Многошаговый WITH делает расчёт метрики похожим на пайплайн: каждый шаг имеет имя и понятную гранулярность.

Разбор

Для метрик вроде конверсии важно контролировать уровни данных: одна строка на пользователя в регистрациях, одна строка на покупку в транзакциях, затем связка по user_id и окну времени. Когда каждый шаг оформлен как отдельный CTE, вы можете проверить объёмы и примеры данных на каждом этапе и быстрее найти, где появилась ошибка (неверная связь, лишние строки, неверный фильтр). Большой вложенный запрос трудно отлаживать; коррелированный подзапрос смешивает уровни; один подзапрос в FROM не даёт промежуточных проверок.

Проверь себя · 1/3разбор после ответа
Вы считаете метрику: доля пользователей, которые совершили покупку в течение 7 дней после регистрации. Какой вариант построения запроса делает логику наиболее проверяемой и удобной для отладки?
Тренировать SQL в Telegram

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