У меня есть таблица активности со структурой, подобной этой:
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 секунду». Другими словами, внутри группы разница между любыми двумя записями при сортировке по дате будет ровно 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 миллионов строк, если это влияет на метод, используемый для решения проблемы.