题解 | #牛客直播各科目同时在线人数#
牛客直播各科目同时在线人数
https://www.nowcoder.com/practice/d69677e41f9a4bf3b3ed7a42573e9490
时间横轴的交集,则取最小的退出时间与进入时间比较,或最大的进入时间与退出时间比较,分别计算,取较大值。
# 求出最大的进入时间和最小的退出时间 with a as( select course_id,max(in_datetime) as max_in,min(out_datetime) as min_out from attend_tb group by course_id ), # 标记 p1 as ( select user_id,course_id,course_name,if(in_datetime<=min_out,1,0) as flag1,if(out_datetime>=max_in,1,0) as flag2 from attend_tb inner join a using(course_id) inner join course_tb using(course_id) ) # 加和,取较大值 select course_id,course_name,if(sum(flag1)>sum(flag2),sum(flag1),sum(flag2)) from p1 group by course_id,course_name