SQL: Календарная таблица и пропущенные даты — Непрерывный отчёт о звонках
Практическая задача по SQL на тему «Календарная таблица и пропущенные даты». В условии приведены схема таблиц, ограничения данных, имена столбцов результата и порядок сортировки. Напишите один SELECT или WITH-запрос для SQLite. Перед проверкой продумайте пустой результат, повторяющиеся строки и границы диапазонов, если они встречаются в условии. Проверяется результат запроса, поэтому допустима эквивалентная реализация. Сначала решите задачу самостоятельно; продолжение практики доступно в полном курсе продвинутого SQL.
Непрерывный отчёт о звонках
Что уже дано
Таблицы calendar(cal_date TEXT PRIMARY KEY) и support_calls(call_id INTEGER PRIMARY KEY, initiated_at TEXT NOT NULL, duration_sec INTEGER NOT NULL). Календарь содержит все семь дат 2024-04-01…2024-04-07 ровно по одному разу и может содержать другие даты. Формат дат YYYY-MM-DD. Время звонков UTC YYYY-MM-DD HH:MM:SS, годы 2023–2025; call_id положительный, duration_sec от 0 до 100000. До 500 строк в каждой таблице.
Что нужно сделать
Постройте ежедневный отчёт за 1–7 апреля 2024 включительно: число звонков и их средняя длительность без округления. Дни без звонков должны иметь calls_count = 0 и avg_duration_sec = NULL. В каждом дне ровно одна строка.
Ввод и вывод
Отправьте один SELECT или WITH-запрос; stdin и печать не используются. Ровно 3 столбцов в указанном порядке и с этими именами: cal_date, calls_count, avg_duration_sec. cal_date — TEXT; calls_count — INTEGER; avg_duration_sec — REAL либо NULL. Сортировка: cal_date ASC. В результате всегда семь строк, в том числе при пустой support_calls. В тестовых результатах разделитель |, NULL — пустое поле. Допускается любой эквивалентный запрос.
Пример
- Подготовка данных
INSERT INTO calendar VALUES ('2024-04-01'),('2024-04-02'),('2024-04-03'),('2024-04-04'),('2024-04-05'),('2024-04-06'),('2024-04-07'),('2023-12-31'),('2025-01-01'); INSERT INTO support_calls VALUES (1,'2024-04-01 09:00:00',120),(2,'2024-04-01 18:00:00',240),(3,'2024-04-04 10:00:00',0);- Вывод
2024-04-01|2|180.0 2024-04-02|0| 2024-04-03|0| 2024-04-04|1|0.0 2024-04-05|0| 2024-04-06|0| 2024-04-07|0|
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
Связанные задачи
- SQL: Агрегация, оконные вычисления и фильтрация — Категории-лидеры и доля в продажах
- SQL: Коррелированные подзапросы и EXISTS — Клиенты с завершённым заказом от 1000
- SQL: RFM-анализ на дату среза — RFM и покупки за последний месяц
- SQL: Взвешенное среднее и агрегация показателей — Общий средний чек через агрегаты категорий
- SQL: Выделение пользовательских сессий — Номер сессии и позиция клика
- SQL: Обход дерева: глубина и путь — Пути, корни и листья всего каталога
