Вход
Регистрация

Объединение событий по пересечению времени на примере лога звонков

Если есть набор записей ID , по сути событий или вызовов
для каждого ID есть Номер Абонента1 есть Номер Абонента2 время начала вызова и время окончания вызова
нужно объединить все связанные вызовы (переключения, параллельные вызовы) т.к. идентификатора нет.
то есть нужно по всему массиву ID
найти те,
в которых участвуют номер Абонента 1 и Номер Абонента 2 с пересечением времени (между временем начала и временем окончания)
Пересечение времени первое что интересует - как проще реализовать?
причем в параллельных вызовах
номер Абонента 1 может стать номером Абонента 2 в другом ID
его тоже надо объединить
То есть примерно так:
ID НомАб1 НомАб2 Начало Окончание
101 333 88000 16:00 16:10
105 333 444 16:01 16:02
108 444 88000 16:01 16:09

вот такие записи необходимо объединить одним идентификатором