题解 | #牛客直播各科目同时在线人数#

牛客直播各科目同时在线人数

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

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务