宣城做网站公司,网站开发相关,wordpress语音问答,英文网站怎么切换中文现有各直播间的用户访问记录表#xff08;live_events#xff09;如下#xff0c;表中每行数据表达的信息为#xff0c;一个用户何时进入了一个直播间#xff0c;又在何时离开了该直播间。
user_id (用户id)live_id (直播间id)in_datetime (进入直播间的时间)out_datetim…现有各直播间的用户访问记录表live_events如下表中每行数据表达的信息为一个用户何时进入了一个直播间又在何时离开了该直播间。
user_id (用户id)live_id (直播间id)in_datetime (进入直播间的时间)out_datetime (离开直播间的时间)10012021-12-1 19:30:002021-12-1 19:53:0010022021-12-1 21:01:002021-12-1 22:00:0010112021-12-1 19:05:002021-12-1 20:55:00
现要求统计各直播间最大同时在线人数期望结果如下: live_id int (直播id)max_user_count int (最大人数)142332
--- 1.计算逻辑 对于同时在线人数问题可以把数据进行处理后然后将出入时间变成一个字段同时打上标记为1或-1表示进入离开直播间同时使用sum()函数累加这个字段最大值为峰值人数 -- 1.对数据进行处理 in_datetime dt, out_datetime dt 设置为时间日期字段同时打上进入出去标记1-1
-- 2.union成一个字段 selectlive_id,in_datetime dt,1 flagfrom live_eventsunion allselect live_id,out_datetime,-1from live_events
-- 3.使用sum over()开窗函数累加人数 按照直播间分区并按照时间进行排序 sum(flag) over(partition by live_id order by dt asc) as ct
--4. 求最大的人数 按照直播间分组求最大人数 max(ct) as max_user_count
group by live_id
-- 5.最终SQL selectlive_id,max(ct) as max_user_count
from
(selectlive_id,dt,sum(flag) over(partition by live_id order by dt asc) as ctfrom (selectlive_id,in_datetime dt,1 flagfrom live_eventsunion allselect live_id,out_datetime,-1from live_events)t1
)t2
group by live_id