题解 | #牛客直播各科目同时在线人数#
牛客直播各科目同时在线人数
https://www.nowcoder.com/practice/d69677e41f9a4bf3b3ed7a42573e9490
# 请你统计每个科目最大同时在线人数(按course_id排序):
# 最大同时在线问题,首先用union all 生成包含时间与行为的表,
# 其中, 行为:进入为1,退出为-1,
# 窗口函数分组求和,排序字段为时间,行为desc
with t as (
SELECT user_id,course_id,in_datetime dt,1 behavior
FROM attend_tb
UNION all
SELECT user_id,course_id,out_datetime dt,-1 behavior
FROM attend_tb )
,t1 as(
select course_id
,sum(behavior)over(partition by course_id order by dt,behavior desc) cnt
from t )
select course_id,course_name,max(cnt)as max_num
from course_tb
left join t1 using(course_id)
group by course_id,course_name
 查看4道真题和解析
查看4道真题和解析