题解 | #牛客直播各科目同时在线人数#
牛客直播各科目同时在线人数
https://www.nowcoder.com/practice/d69677e41f9a4bf3b3ed7a42573e9490
# 求最大同时在线人数 # 经典瞬时人数计算 # 临时表0, 将进入和离开时间分别编码为1,-1 然后组合在一起 WITH temp_0 AS( SELECT course_id, in_datetime _time, 1 cnt FROM attend_tb UNION ALL SELECT course_id, out_datetime _time, -1 cnt FROM attend_tb ) # 取最值 SELECT course_id, course_name, MAX(num) max_num FROM( # 子查询根据课程id分页,根据时间和计数字段排序,先增后减,得到每个课程的瞬时在线人数 SELECT course_id, SUM(cnt) OVER(PARTITION BY course_id ORDER BY _time, cnt DESC) num FROM temp_0 ) a JOIN course_tb USING(course_id) GROUP BY course_id, course_name ORDER BY course_id