首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据列中的值对行进行编号

如何根据列中的值对行进行编号
EN

Stack Overflow用户
提问于 2019-08-15 04:15:28
回答 1查看 45关注 0票数 0

假设我有一个事件日志(按UserIDStart排序,使用LAG()inactive time = Start - Start_of_previous_event添加Start_of_previous_event ):

代码语言:javascript
复制
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列:

代码语言:javascript
复制
1
1
1
2
3

如果我想像这样对结果表进行分组,有没有办法避免这种情况:

代码语言:javascript
复制
Select Event, Count(distinct session_id)
from sessions
group by Event
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-15 04:19:10

您可以使用日期算术和累积和来指定会话。日期算法因数据库而异,但这应该会让您有所了解:

代码语言:javascript
复制
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;
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57501452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档