(извиняюсь за название этого вопроса - я не был слишком уверен, как это объяснить)
Не уверен, что это можно сделать в SQL.
Ниже приведен (несколько урезанный) пример таблицы журнала событий.
EVENT ID DATE TIME
--------- ---------- -------- ----
ONE_THING 0006241800 20091109 1719
ONE_THING 0006944800 20091109 1720
ANOTHER 0007517110 20091109 1721
ANOTHER 0007214240 20091109 1721
ANOTHER 0006907900 20091109 1725
ANOTHER 0006501580 20091109 1727
ONE_THING 0006944800 20091109 1737
ANOTHER 0005749820 20091109 1737
ANOTHER 0006810500 20091109 1738
ANOTHER 0007481970 20091109 1738
ANOTHER 0006331740 20091109 1739
ANOTHER 0007253840 20091109 1739
ANOTHER 0006929280 20091109 1747
ANOTHER 0007297950 20091109 1749
ANOTHER 0005055560 20091109 1751
ANOTHER 0006092320 20091109 1751
ONE_THING 0001668720 20091109 1753
ONE_THING 0007218000 20091109 1754
Я ищу, чтобы найти группы случаев ДРУГОГО, где не было никакого другого события в группе и для периодов времени, превышающих 2 минуты.
Итак, в приведенном выше наборе данных первая группа будет:
ANOTHER 0007517110 20091109 1721
ANOTHER 0007214240 20091109 1721
ANOTHER 0006907900 20091109 1725
ANOTHER 0006501580 20091109 1727
и второй будет:
ANOTHER 0005749820 20091109 1737
ANOTHER 0006810500 20091109 1738
ANOTHER 0007481970 20091109 1738
ANOTHER 0006331740 20091109 1739
ANOTHER 0007253840 20091109 1739
ANOTHER 0006929280 20091109 1747
ANOTHER 0007297950 20091109 1749
ANOTHER 0005055560 20091109 1751
ANOTHER 0006092320 20091109 1751
И в идеале я бы хотел получить:
ANOTHER 0007517110 20091109 1721
ANOTHER 0006501580 20091109 1727
и:
ANOTHER 0005749820 20091109 1737
ANOTHER 0006092320 20091109 1751
Или еще лучше:
EVENT DATE TIME_START TIME_END
--------- -------- ---------- --------
ANOTHER 20091109 1721 1727
ANOTHER 20091109 1737 1751
Я думал о сравнении строк, но может быть, есть лучший способ? Буду признателен за любые советы по этому. Решение просто должно работать - оно не обязательно должно быть элегантным или элегантным.
PS> Я использую Oracle.