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

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

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;
全部评论

相关推荐

不愿透露姓名的神秘牛友
02-12 10:05
小米集团 算法工程师 28.0k*15.0
泡沫灬一触即破:楼上那个看来是看人拿高薪,自己又不如意搁这泄愤呢是吧,看你过往评论很难不怀疑你的精神状态
点赞 评论 收藏
分享
01-14 15:08
东南大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务