我有一个跟踪用户活动的数据集,我需要识别满足特定条件的连续行。表结构和示例数据如下:
表:UserActivity
用户身份 | 活动 | 时间戳 |
---|---|---|
1 | 登录 | 2023-11-01 08:00:00 |
1 | 页面视图 | 2023-11-01 08:10:00 |
1 | 登录 | 2023-11-01 08:15:00 |
1 | 登出 | 2023-11-01 08:20:00 |
2 | 登录 | 2023-11-01 09:00:00 |
2 | 登录 | 2023-11-01 09:05:00 |
2 | 页面视图 | 2023-11-01 09:10:00 |
我想识别同一用户的连续行具有相同活动及其时间戳的情况。例如:
对于 UserID = 2,有两个连续的登录活动。像这样。
预期输出
用户身份 | 活动 | 开始时间戳 | 结束时间戳 |
---|---|---|---|
2 | 登录 | 2023-11-01 09:00:00 | 2023-11-01 09:05:00 |
我尝试使用自连接将每一行与前一行进行比较,但对于大型数据集来说,这会导致计算成本过高。我也尝试使用LAG
和LEAD
函数,但无法有效地对连续行进行分组。