gpt4 book ai didi

sql - 给定点击流拆分时间间隔

转载 作者:行者123 更新时间:2023-11-29 13:38:35 25 4
gpt4 key购买 nike

我得到一个带有字段的点击流用户身份 ,网站编号,datetime - 点击的时间戳Session统计30分钟间隔内的所有点击

如何使用

的输出进行 SQL 查询
user_id    site_id    session_start_time    session_end_time

最佳答案

好的,假设您正在获取一些数据,例如

userid, siteid, datetime
1, 1, 2000-01-01 00:30
1, 1, 2000-01-01 01:00
1, 2, 2001-01-01 01:00
1, 2, 2001-01-01 01:30
2, 2, 2002-01-01 02:00
2, 2, 2002-01-01 02:30

并且您希望将上一行的日期设为开始,将这一行的日期设为结束:

SELECT 
userid,
siteid,
LAG(datetime) OVER(PARTITION BY siteid, userid ORDER BY datetime) as starttime, datetime as endtime
FROM
table

userid, siteid, starttime, endtime
1, 1, null, 2000-01-01 00:30
1, 1, 2000-01-01 00:30, 2000-01-01 01:00
1, 2, null, 2001-01-01 01:00
1, 2, 2001-01-01 01:00, 2001-01-01 01:30
2, 2, null, 2002-01-01 02:00
2, 2, 2002-01-01 02:00, 2002-01-01 02:30

特定行 x 中的每个日期都将成为下一行 x+1 的开始日期。分区意味着用户和站点 ID 有自己的开始/结束日期。如果这不是故意的,请调整分区

隐藏空值:

WITH cte AS(
SELECT
userid,
siteid,
LAG(datetime) OVER(PARTITION BY siteid, userid ORDER BY datetime) as starttime, datetime as endtime
FROM
table
)
SELECT * FROM cte WHERE starttime IS NOT NULL

关于sql - 给定点击流拆分时间间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58827824/

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