У меня есть таблица активности со структурой, как это: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 миллионов строк, если это влияет на метод, используемый для решения проблемы.
Не могли бы вы подключиться к предыдущей или аналогичной конструкции? –
Подобный вопрос был задан ранее сегодня - у него очень интересный ответ с наивысшим рейтингом: http://stackoverflow.com/questions/9977371/group-by-values-that-are-in-sequence –