【发布时间】:2020-04-14 22:13:16
【问题描述】:
我每天都有这样的用户登录/注销数据:
date,user,action
2020-04-14 01:00:00,user1,login
2020-04-14 01:05:00,user2,login
2020-04-14 01:10:00,user3,login
2020-04-14 02:40:00,user2,logout
2020-04-14 02:50:00,user3,logout
2020-04-14 03:10:00,user2,login
2020-04-14 03:10:00,user1,logout
2020-04-14 03:30:00,user3,login
2020-04-14 04:20:00,user2,logout
用户可以在一天内多次登录/注销。会话关闭,然后新会话打开。 (如用户2) 我需要获取每个会话的持续时间,并且没有会话 ID。
如何将这两个事件合并为一行:登录和登录后第一次注销。像这样:
login_date,logout_date,user
2020-04-14 01:00:00,2020-04-14 03:10:00,user1
2020-04-14 01:05:00,2020-04-14 02:40:00,user2
2020-04-14 01:10:00,2020-04-14 02:50:00,user3
2020-04-14 03:10:00,2020-04-14 04:20:00,user2
2020-04-14 03:30:00,-,user3
【问题讨论】:
-
如果用户已注销但未登录,预期的行为是什么?或者这会是数据中的错误而不是预期的吗?
-
login_date 可以为空。我可以用 00:00:00 填写 login_date。