SQL: Функции дат и расчёт длительности в SQLite — Длительность подписок, пересекающих февраль
Практическая задача по SQL на тему «Функции дат и расчёт длительности в SQLite». В условии приведены схема таблиц, ограничения данных, имена столбцов результата и порядок сортировки. Напишите один SELECT или WITH-запрос для SQLite. Перед проверкой продумайте пустой результат, повторяющиеся строки и границы диапазонов, если они встречаются в условии. Проверяется результат запроса, поэтому допустима эквивалентная реализация. Сначала решите задачу самостоятельно; продолжение практики доступно в полном курсе продвинутого SQL.
Длительность подписок, пересекающих февраль
Что уже дано
Таблица subscriptions(sub_id INTEGER PRIMARY KEY, user_id INTEGER NOT NULL, start_date TEXT NOT NULL, end_date TEXT NOT NULL). До 500 строк, ID положительные. Даты валидны, формат YYYY-MM-DD, годы 2023–2025. start_date < end_date. Подписка действует в полуоткрытом интервале [start_date, end_date).
Что нужно сделать
Оставьте подписки, действовавшие хотя бы один календарный день в феврале 2024. Для них посчитайте duration_days — длительность всей подписки в календарных днях, не только февральской части.
Ввод и вывод
Отправьте один SELECT или WITH-запрос; stdin и печать не используются. Ровно 5 столбцов в указанном порядке и с этими именами: sub_id, user_id, start_date, end_date, duration_days. sub_id, user_id, duration_days — INTEGER; обе даты — TEXT; NULL нет. Сортировка: sub_id ASC. Если подходящих подписок нет, результат пустой. В тестовых результатах разделитель |, NULL — пустое поле. Допускается любой эквивалентный запрос.
Пример
- Подготовка данных
INSERT INTO subscriptions VALUES (1,1,'2024-01-20','2024-02-05'),(2,2,'2024-02-01','2024-03-01'),(3,3,'2024-02-29','2024-03-02'),(4,1,'2024-01-01','2024-02-01'),(5,2,'2024-03-01','2024-03-02');
- Вывод
1|1|2024-01-20|2024-02-05|16 2|2|2024-02-01|2024-03-01|29 3|3|2024-02-29|2024-03-02|2
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
Связанные задачи
- SQL: Агрегация, оконные вычисления и фильтрация — Категории-лидеры и доля в продажах
- SQL: SELF JOIN и поиск уникальных пар — Пары с несколькими общими проектами
- SQL: Календарная таблица и пропущенные даты — Непрерывный отчёт о звонках
- SQL: Объединение перекрывающихся интервалов — Объединённая занятость внутри отчётного окна
- SQL: Подсчёт одновременно активных интервалов — Максимальное число занятых столов
- SQL: EXPLAIN QUERY PLAN в SQLite — Сводка ошибок и их доля по сервисам
