Oracle GROUP BY похожих меток времени?

У меня есть таблица действий со следующей структурой:

id  prd_id  act_dt               grp
------------------------------------
1   1       2000-01-01 00:00:00
2   1       2000-01-01 00:00:01
3   1       2000-01-01 00:00:02
4   2       2000-01-01 00:00:00
5   2       2000-01-01 00:00:01
6   2       2000-01-01 01:00:00
7   2       2000-01-01 01:00:01
8   3       2000-01-01 00:00:00
9   3       2000-01-01 00:00:01
10  3       2000-01-01 02:00:00

Я хочу разделить данные в этой таблице действий по продукту (prd_id) и дате действия (act_dt) и обновите столбец группы ( grp) значением из последовательности для каждой из этих групп.

Суть в том, что мне нужно сгруппировать по похожимвременным меткам, где сходство означает «все записи имеют разницу ровно в 1 секунду». Другими словами, внутри группы разница между любыми 2 записями при сортировке по дате будет ровно 1 секунда, а разница между первой и последней записями может составлять любое количество времени, пока все промежуточные записи равны 1 секунде. отдельно.

Для примера данных группы будут следующими:

id  prd_id  act_dt               grp
------------------------------------
1   1       2000-01-01 00:00:00  1
2   1       2000-01-01 00:00:01  1
3   1       2000-01-01 00:00:02  1
4   2       2000-01-01 00:00:00  2
5   2       2000-01-01 00:00:01  2
6   2       2000-01-01 01:00:00  3
7   2       2000-01-01 01:00:01  3
8   3       2000-01-01 00:00:00  4
9   3       2000-01-01 00:00:01  4
10  3       2000-01-01 02:00:00  5

Какой метод я буду использовать для достижения этой цели?

Размер таблицы составляет ~20 миллионов строк, если это влияет на метод, используемый для решения проблемы.

6
задан FtDRbwLXw6 2 April 2012 в 16:28
поделиться