假设我有一个事件日志(按UserID和Start排序,使用LAG()和inactive time = Start - Start_of_previous_event添加Start_of_previous_event ):
UserID Event Start Start_of_previous_event inactive_time
1 Onboarding 2024-01-01 01:00:00 null null
1 Main 2024-01-01 01:01:00 2024-01-01 01:00:00 1
1 Cart 2024-01-01 01:05:00 2024-01-01 01:01:00 4
1 Main 2024-01-01 02:00:00 2024-01-01 01:05:00 55
2 Onboarding 2024-01-01 01:00:00 null null如何添加带有session_ids的列?对于新的UserID,新会话在30分钟的非活动时间后开始。
以上示例的Session_id列:
1
1
1
2
3如果我想像这样对结果表进行分组,有没有办法避免这种情况:
Select Event, Count(distinct session_id)
from sessions
group by Event发布于 2019-08-15 04:19:10
您可以使用日期算术和累积和来指定会话。日期算法因数据库而异,但这应该会让您有所了解:
select el.*,
sum(case when start_of_previous_event > start - interval '30 minute'
then 0 else 1
end) over (order by userid order by start) as session_cnt
from eventlog el;https://stackoverflow.com/questions/57501452
复制相似问题