LEFT JOIN с календарём: почему пропадают дни без заказов
Отчёт должен сохранять все даты календаря, включая дни без продаж. Разберите, на каком этапе условие по правой таблице меняет состав результата.
Выберите ответ и проверьте себя. Продолжить тему можно в курсе Продвинутый SQL: сложные запросы и задачи для собеседований.
Таблица calendar содержит даты с '2024-05-01' по '2024-05-03'. В таблице orders за этот период есть ровно одна запись: '2024-05-01' на сумму 1500 руб. со статусом 'paid'. Аналитик выполняет запрос:
SELECT c.cal_date, COALESCE(o.amount, 0) AS daily_amount
FROM calendar c
LEFT JOIN orders o ON c.cal_date = o.order_date
WHERE c.cal_date BETWEEN '2024-05-01' AND '2024-05-03'
AND o.status = 'paid';
Сколько строк вернёт данный запрос и почему?
Без регистрации · результат не сохраняется
Связанные задачи
- SQL: Календарная таблица и пропущенные даты — Непрерывный отчёт о звонках
- SELF JOIN: сколько пар получится при соединении таблицы с собой
- INTERSECT в SQL: сколько строк останется после пересечения
- SQL: Агрегация, оконные вычисления и фильтрация — Категории-лидеры и доля в продажах
- SQL: SELF JOIN и поиск уникальных пар — Пары с несколькими общими проектами
- SQL EXISTS: размножит ли запрос строки клиента
