SQL: Проверка интервалов действия — Некорректные границы версии
Практическая задача по SQL на тему «Проверка интервалов действия». В условии приведены схема таблиц, ограничения данных, имена столбцов результата и порядок сортировки. Напишите один SELECT или WITH-запрос для SQLite. Перед проверкой продумайте пустой результат, повторяющиеся строки и границы диапазонов, если они встречаются в условии. Проверяется результат запроса, поэтому допустима эквивалентная реализация. Сначала решите задачу самостоятельно; продолжение практики доступно в полном курсе продвинутого SQL.
Некорректные границы версии
Что уже дано
Уже заполнена client_tariffs(id INTEGER PRIMARY KEY,client_id INTEGER NOT NULL,valid_from TEXT NOT NULL,valid_to TEXT). ID положительные INTEGER; id уникален. Даты — валидные YYYY-MM-DD между 2020-01-01 и 2099-12-31. Только valid_to может быть NULL, обозначая открытый конец. До 1000 строк. Интервалы [valid_from,valid_to) могут иметь равные или обратные границы; это и проверяем.
Что нужно сделать
Верните все одиночные строки с заданным valid_to <= valid_from, сохраняя исходные четыре поля. Открытый NULL-конец допустим. Пересечения между разными корректными строками эта проверка не рассматривает.
Ввод и вывод
Отправьте один SELECT или WITH-запрос; stdin и печать не используются. Ровно 4 столбцов в указанном порядке и с этими именами: id, client_id, valid_from, valid_to. id и client_id — INTEGER, даты — TEXT; NULL в результате нет, поскольку открытые строки не являются нарушениями. Сортировка: id ASC. На корректных или пустых данных результат пустой. В тестовых результатах разделитель |, NULL — пустое поле. Допускается любой эквивалентный запрос.
Пример
- Подготовка данных
INSERT INTO client_tariffs VALUES (8,1,'2024-01-01','2024-02-01'),(2,1,'2024-03-01','2024-03-01'),(3,2,'2024-05-01','2024-04-01'),(4,2,'2024-04-01',NULL);
- Вывод
2|1|2024-03-01|2024-03-01 3|2|2024-05-01|2024-04-01
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
Связанные задачи
- SQL: Агрегация, оконные вычисления и фильтрация — Категории-лидеры и доля в продажах
- SQL: SELF JOIN и поиск уникальных пар — Пары с несколькими общими проектами
- SQL: Календарная таблица и пропущенные даты — Непрерывный отчёт о звонках
- SQL: Объединение перекрывающихся интервалов — Объединённая занятость внутри отчётного окна
- SQL: Подсчёт одновременно активных интервалов — Максимальное число занятых столов
- SQL: EXPLAIN QUERY PLAN в SQLite — Сводка ошибок и их доля по сервисам
