gpt4 book ai didi

sql - 如何使用 SQL 查找用户 session 事件之间的时间

转载 作者:行者123 更新时间:2023-11-29 14:16:26 27 4
gpt4 key购买 nike

使用 SQL 如何找到每个用户 session 之间的持续时间或耗时?例如,user_id 1234 在 2017-01-01 00:00:00 有一个 session ,在 2017-01-02 有另一个 session (见下表)。我怎样才能找到从上一个 session_end 到他们下一个 session_start 开始的时间。

user_id|session_start       |session_end
1234 | 2017-01-01 00:00:00| 2017-01-01 00:30:30
1236 | 2017-01-01 01:00:00| 2017-01-01 01:05:30
1234 | 2017-01-02 12:00:09| 2017-01-02 12:00:30
1234 | 2017-01-01 02:00:00| 2017-01-01 03:30:30
1236 | 2017-01-01 00:00:00| 2017-01-01 00:30:30

谢谢。

最佳答案

这可以使用 window functions 轻松完成

select user_id, session_start, session_end,
session_start - lag(session_end) over (partition by user_id order by session_start) as time_diff
from the_table
order by user_id, session_start;

在线示例:http://rextester.com/NTVH38963


从另一个时间戳中减去一个时间戳返回 interval将其转换为分钟,您可以 extract获取间隔代表的秒数并将它们除以 60 得到分钟数:

select user_id, session_start, session_end,
extract(epoch from
session_start - lag(session_end) over (partition by user_id order by session_start)
) / 60 as minutes
from the_table
order by user_id, session_start;

关于sql - 如何使用 SQL 查找用户 session 事件之间的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47119694/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com