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

Oracle Developer👨🏻‍💻

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

Oracle Developer👨🏻‍💻

4 года назад
Открыть в
Непересекающиеся отрезки. Решение Задача: постановка в посте вторника. Решение: Суть: необходимо проверять границы отрезков. Можно решить задачу ”в лоб”. Расписать все кейсы, когда новый отрезок заходит одной границей на начало отрезка в таблице, когда другой и т.д. Получится огромная “портянка” из условий. Можно пойти от обратного (см. рисунок) Достаточно проверить, что b2 > a and a2 < b; Итоговый запрос:
select count(1)
  from (select  1 client_id,
                date'2022-01-10' d_from,
                date'2022-01-12' d_till
          from dual) e
  join client_tariff t
    on t.client_id = e.client_id
   and e.d_till > t.date_from
   and e.d_from < t.date_till;

В моей практике, подобная задача периодически возникала в рабочих кейсах. И один раз на собеседовании в Яндексе. Правда, там задача с отрезками еще более замороченная. Но если вы поймете принцип этого решения, значит сможете сообразить как решаются подобные задачи. Обсудить в чатике #решениезадачи #яндекс #отрезки