Обложка канала

Oracle Developer👨🏻‍💻

Все о разработке в СУБД "Oracle" SQL, PL/SQL, оптимизация, архитектура, сертификации и многое другое.

Oracle Developer👨🏻‍💻

4 года назад
Открыть в
Непересекающиеся отрезки Задача: при вставке в таблицу необходимо проверять, что новая строка не пересекается по датам с уже имеющимися в разрезе клиента. Необходимо написать запрос проверяющий пересечения.
create table client_tariff(
  client_id number(38) not null,
  date_from date not null,
  date_till date not null
  --...  
);

insert into client_tariff values
(1, date'2022-01-01', date'2022-01-10');
insert into client_tariff values
(1, date'2022-02-01', date'2022-02-13');

Примеры: c '2022-01-10' по '2022-01-12'-- ок с '2022-01-10' по '2022-02-01'-- ok c '2021-12-01' по '2022-01-02' - ошибка с '2022-01-14' по '2022-02-03'-- ошибка Визуально можно посмотреть на рисунке: ▫️1-й отрезок пересекается своим окончанием с уже имеющимся; ▫️2-й отрезок пересекается своим началом с окончанием имеющегося; и так далее. варианты могут быть различные. ▫️“все ок” - отрезки, которые не пересекаются с имеющимися. Решение в четверг 🎓 #задача #яндекс