【发布时间】:2014-11-12 17:15:05
【问题描述】:
我想根据“不活动时间”对 SQL 中的某些行进行 GROUP BY, 这意味着注意时间戳之间的巨大差距以识别用户 会议。
假设这个动作表在一个 sqlite 数据库中:
_actions_
| id | userID | timestamp | actionType |
现在我可以查看所有用户操作及其按小时、月、年等分组的类型。
SELECT
userID, strftime('%H', timestamp), group_concat(actionType)
FROM
actions
GROUP BY userID, strftime('%H', timestamp);
然而,这并不完全是我想要的。考虑一下:
| 1 | 333 | 13.11.2014-20:59 | action6 |
| 2 | 333 | 13.11.2014-21:01 | action3 |
| 3 | 333 | 13.11.2014-21:47 | action5 |
我的示例合并到第 1 行和第 2+3 行,但是如果我们假设会话超时 30 分钟我们应该得到第 1+2 行和第 3 行。任何 sql-ideas 吗?
当然可以在 R、Pandas 等中加载数据库并检查每个用户,如果 current_timestamp - last_timestamp > 30 分钟,但这真的是要走的路吗?
【问题讨论】:
标签: sqlite timestamp group-by date-difference