Как посчитать максимальный период пользования на Oracle SQL?
Всем привет! Возникла трудность в решение задачи на SQL Oracle. Допустим, есть пользователи, которые пользовались одним и тем же устройством, они помечены как id_user. В столбцах с датой указаны периоды, когда начали пользоваться устройством и когда закончили. Также есть столбец, где указано сколько дней каждый пользователь пользовался. Необходимо выбрать самый длинный период пользования устройством независимо от пользователя. Т.е. когда даты пользования для пользователей идентичны, то просто отбирается самый длинный период в столбце period. Это характерно для строк 1,2,4,5, но если даты пересекаются как указано в строке 3 и 6, то взять общий период пользования, в данном случае start_date = 4.01.2020 и end_date = 11.01.2020, и получить период пользования в 7 дней. Он же и будет самым максимальным для данного устройства.
| n | id_device | id_user | start_date | end_date | period |
|---|---|---|---|---|---|
| 1 | 1 | 1 | 12-03-2020 | 13-03-2020 | 1 |
| 2 | 1 | 1 | 9-02-2020 | 11-02-2020 | 2 |
| 3 | 1 | 1 | 8-01-2020 | 11-01-2020 | 3 |
| 4 | 1 | 2 | 12-03-2020 | 13-03-2020 | 1 |
| 5 | 1 | 2 | 9-02-2020 | 11-02-2020 | 2 |
| 6 | 1 | 2 | 4-01-2020 | 9-01-2020 | 5 |
Результат:
| id_device | max_days |
|---|---|
| 1 | 7 |