У вас есть таблица `Activity` с полями` ID`, `start_time` и` end_time`. Все эти поля имеют строку типа данных - PullRequest
0 голосов
/ 10 апреля 2020
ID  START_TIME  END_TIME  
100 10:00        12:00 
100 10:15        12:30 
100 12:15        12:45 
100 13:00        14:00 
200 10:15        10:30

Вопрос: Напишите (предпочтительно куст) SQL запрос, чтобы создать новое поле group_id, которое идентифицирует записи в каждом ID с перекрывающимися интервалами start_time и end_time. Приемлемое решение будет иметь уникальный group_id для каждого ID и перекрывающихся наборов интервалов. Требуемый пример:

ID  START_TIME  END_TIME    GROUP_ID 
100 10:00   12:00   1  
100 10:15   12:30   1  
100 12:15   12:45   1 
100 13:00   14:00   2  
200 10:15   10:30   3

Дополнительная информация: Для данного ID, если какой-либо из его интервалов перекрывается, соответствующие записи принадлежат к той же группе и, следовательно, должны иметь одинаковые group_id. Запись A перекрывает другую запись B, когда A * start_time и / или end_time находится между B start_time и end_time.

В этом примере ID = 100 имеет четыре интервала. Первые три перекрываются => вторая запись перекрывается с первой (start_time из 10:15 находится между start_time и end_time от 10:00 до 12:00), а третья перекрывается со второй ( start_time от 12:15 находится между start_time и end_time от 10:15 до 12:30). Из-за этого все они имеют одинаковое group_id из 1. Четвертый интервал для ID = 100 не перекрывает другие интервалы в этом ID, и поэтому он становится своей собственной группой с новым group_id. Последняя запись имеет совершенно другой ID, и поэтому она начинает третью группу также с новым group_id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...