hivesql练习_同时在线人数问题
现有各直播间的用户访问记录表(live_events)如下,表中每行数据表达的信息为,一个用户何时进入了一个直播间,又在何时离开了该直播间。
user_id (用户id) | live_id (直播间id) | in_datetime (进入直播间的时间) | out_datetime (离开直播间的时间) |
---|---|---|---|
100 | 1 | 2021-12-1 19:30:00 | 2021-12-1 19:53:00 |
100 | 2 | 2021-12-1 21:01:00 | 2021-12-1 22:00:00 |
101 | 1 | 2021-12-1 19:05:00 | 2021-12-1 20:55:00 |
现要求统计各直播间最大同时在线人数,期望结果如下:
live_id <int> (直播id) | max_user_count <int> (最大人数) |
---|---|
1 | 4 |
2 | 3 |
3 | 2 |
解答:
1 with tt as ( 2 SELECT 3 live_id, in_datetime dt, 1 flag --定义登入标识 4 FROM 5 live_events 6 union all 7 SELECT 8 live_id, out_datetime dt, -1 flag --定义登出标识 9 FROM 10 live_events 11 ), 12 tt1 as( 13 select live_id, dt, sum(flag) over(partition by live_id order by dt) user_count --当前时间的在线人数 14 from tt 15 ) 16 select live_id, max(user_count) max_user_count 17 from 18 tt1 19 group by live_id
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)