题解 | #牛客直播开始时各直播间在线人数#
牛客直播开始时各直播间在线人数
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进行排序】