题解 | #牛客直播各科目同时在线人数#
牛客直播各科目同时在线人数
https://www.nowcoder.com/practice/d69677e41f9a4bf3b3ed7a42573e9490
明确题意:
请你统计每个科目最大同时在线人数
问题分解:
计算在线人数变动情况:select course_id,in_datetime dt,1 uv from attend_tb union all select course_id,out_datetime dt,-1 uv from attend_tb
关联课程表和上课情况表:join course_tb ct on t1.course_id = ct.course_id
计算同时在线人数:sum(uv) over(partition by course_id order by dt,uv desc)
按科目分组:group by course_id,course_name
计算最大同时在线人数:max(num)
细节问题:
按course_id排序:order by course_id
select course_id, course_name, max(num) max_num from( select ct.course_id, course_name, sum(uv) over(partition by course_id order by dt,uv desc) num from( select course_id, in_datetime dt, 1 uv from attend_tb union all select course_id, out_datetime dt, -1 uv from attend_tb ) t1 join course_tb ct on t1.course_id = ct.course_id ) t2 group by course_id,course_name order by course_id;