Я заметил, что вы начинаете заново, основываясь на первых шести символах event_type
. Итак, вам нужно partition by
:
select t.*
row_number() over (partition by left(event_type, 6) order by timestamp) as cycle_id
from t;
РЕДАКТИРОВАТЬ:
Если ваша нумерация основана на месяце:
select t.*
row_number() over (partition by year(timestamp), month(timestamp) order by timestamp) as cycle_id
from t;