Интервалы SQL: пересечения, занятость и проверка дат

Задачи SQL на интервалы: некорректные границы, длительность, пересечения и максимальную занятость.

Состав подборки: 5 задач на код. Условия и формат проверки указаны на странице каждой задачи.

Разберите маленький пример

Полуоткрытые интервалы [10:00, 11:00) и [11:00, 12:00) не пересекаются. Для такой модели пересечение есть, когда начало каждого интервала строго меньше конца другого. Если конечная граница включена, правила меняются — это должно быть явно задано.

На что обратить внимание

  • Открытый конец NULL, пустой интервал и обратные границы требуют разных решений.
  • При событиях в один момент согласуйте порядок начала и завершения с моделью границ.
  • Уточните, нужна длительность всего интервала или только пересечения с отчётным окном: в упражнениях есть оба сценария.
  • При объединении цепочки перекрытий нельзя всегда сравнивать только с концом непосредственно предыдущей строки.

Порядок практики

  1. SQL: Проверка интервалов действия — Некорректные границы версии — код.
  2. SQL: Функции дат и расчёт длительности в SQLite — Длительность подписок, пересекающих февраль — код.
  3. SQL: Подсчёт одновременно активных интервалов — Максимальное число занятых столов — код.
  4. SQL: Подсчёт одновременно активных интервалов — Пиковые окна работ и занятые слоты — код.
  5. SQL: Объединение перекрывающихся интервалов — Объединённая занятость внутри отчётного окна — код.

Куда двигаться дальше

Для последовательного освоения сложных запросов посмотрите платный курс «Продвинутый SQL».

Окна и упорядоченные вычисления.

Интервалы SQL: пересечения, занятость и проверка дат