题解 | #牛客直播各科目同时在线人数#
牛客直播各科目同时在线人数
https://www.nowcoder.com/practice/d69677e41f9a4bf3b3ed7a42573e9490
-- 思路: -- 1.对in_datetime与out_datetime编码 status:in观看人数+1,out观看人数-1,然后union all 结果为临时表temp -- 2.对表temp使用SUM窗口函数,按课程id维度,统计按时间戳升序的观看人数变化情况: -- 其中题目要求:如果同一时刻有进入也有离开时,先记录学员数增加再记录减少 -- 则-- 按照dt升序,status倒序统计 -- -- 3.按照课程id分组,取每个课程同时在线观看的最大人数即可 -- 3.按照artical_id分组,取每个文章同时在线阅读的最大人数即可 select t1.course_id, c.course_name, max(course_instant_unt) as max_num from ( select course_id, dt, sum(status) over ( partition by course_id order by dt, status desc ) as course_instant_unt from ( select user_id, course_id, in_datetime as dt, 1 as status from attend_tb union all select user_id, course_id, out_datetime as dt, -1 as status from attend_tb ) t ) t1 join course_tb c on t1.course_id = c.course_id group by t1.course_id, c.course_name order by t1.course_id
SQL大厂面试题 文章被收录于专栏
牛客网sql大厂面试题题解~