题解 | #牛客直播开始时各直播间在线人数#
牛客直播开始时各直播间在线人数
https://www.nowcoder.com/practice/bdd30e83d47043c99def6d9671bb6dbf
# 时间:4/16 11:00 ~
# 明确问题:统计的是19:00 时刻的在线人数!
# 方法:maybe sum()over()进行累计统计 (no) 只需要筛选保留符合条件时间段的数据
# 不涉及
# 字段:course_id、course_name、online_num
# tb1:筛选时间段包含了19:00的数据\
with tb1 as(
select distinct user_id , course_id ,course_name,course_datetime
from attend_tb left join course_tb using(course_id)
# where in_datetime =< course_datetime and out_datetime >= course_datetime
where course_datetime between in_datetime and out_datetime
)
# tb2:聚合输出结果
select course_id,course_name,count(user_id) as online_num
from tb1
group by course_id,course_name
# 虽然这题不涉及累加统计最大在线人数
# 但是好像也可以用先标记后累加这种方式求解。
# 复习一下知识点:
# ① 标记进出uv:先设定进入的uv时刻为1,退出的uv时刻为-1【union all】
# ② 接着用进行分组累积求和,获取所有时刻的累计人数【sum()over(),按照文章id或直播间id进行分组,time和uv进行排序】

