为列中的重复值设置数字 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;
我正在研究一个应用程序的跟踪客户旅程。 尝试设置 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;