为列中的重复值设置数字 flag/rank

Set numeric flag/rank for repetitive values in a column

我正在研究一个应用程序的跟踪客户旅程。 尝试设置 rank/counter 以在共享相同 ID 的多个会话之间隔离一个会话。(理想情况下应该是唯一的)。

table的当前结构:

期望的输出:

曾尝试在序列号上使用 row_number,但是当 sequence_number 第一次出现时(最后一行为 4),它应该是第一个计数。

每当序列号从 1(表示新会话)开始时,我应该如何拆分数据并拥有一个会话列。

您似乎需要 'START' 的累计计数:

select t.*,
       sum(case when activity = 'START' then 1 else 0 end) over
           (partition by session_id
            order by time_stamp
            rows between unbounded preceding and current row
           ) as session
from t;