现有各直播间的用户访问记录表(live_events)如下,表中每行数据表达的信息为,一个用户何时进入了一个直播间,又在何时离开了该直播间。
现要求统计各直播间最大同时在线人数,期望结果如下:
查询sql
with login as(
SELECT
live_id,
in_datetime in_and_out,
1 flag
FROM live_events
),logout as (
SELECT
live_id,
out_datetime in_and_out,
-1 flag
from live_events
)
SELECT
live_id,
max(user_count) max_user_count
from(
SELECT
live_id,
in_and_out,
sum(flag) over(PARTITION by live_id order by in_and_out) user_count
from(
SELECT
*
from login
UNION ALL
(
SELECT
*
from logout
)
)t1
)t2 GROUP by live_id