题解 | #每篇文章同一时刻最大在看人数#

#时间戳法解题,分别标记进和出的时间,按时间排序逐个相加
select artical_id,max(view_cnt)  max_uv
from 
(
select artical_id,
sum(cnt) 
over(partition by artical_id order by artical_id,check_time,cnt desc) 
# 整道题的坑体现在这里,要求先加后减 故对时间升序,时间相同时对结果降序 cnt desc
view_cnt
from
(
    select artical_id,in_time as check_time,1 as cnt
    from tb_user_log
    union all
    select artical_id,out_time,-1
    from tb_user_log
)t1
where artical_id<>0
)t2
group by artical_id
order by max_uv desc

全部评论

相关推荐

11-03 13:18
门头沟学院 Java
包行:平时怎么刷算法题的哇,字节的手撕听说都很难
字节跳动工作体验
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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