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

每篇文章同一时刻最大在看人数

https://www.nowcoder.com/practice/fe24c93008b84e9592b35faa15755e48

# 1.将开始时间和结束时间视作相同时间列,分别给予标签1和-1表示在看人数的增加和减少。
# 2.SUM窗口函数,按文章id维度,统计按时间戳升序的观看人数变化情况
# 3.题目要求在瞬时统计时遵循【先进后出】,因此在ORDER BY层面,在遵循时间戳dt升序的同时,还要遵循先+1再-1的原则,即diff DESC

with t1 as
(select 
    artical_id,
    uid,
    in_time as dt ,
    1 as diff 
from tb_user_log 
where artical_id >0
union all
select artical_id,
    uid,
    out_time as dt ,
    -1 as diff 
from tb_user_log 
where artical_id >0),

t2 as
(select 
    artical_id,
    SUM(diff) over(Partition by artical_id order by dt,diff desc) as cnt 
from t1)

select 
    artical_id,
    max(cnt) as max_uv
from t2
group by artical_id
order by max_uv desc

全部评论

相关推荐

01-04 07:53
门头沟学院 C++
心愿便利贴:工作了以后回头再看待这个问题,从客观的视角来讲是因为每个人对自己的要求不同,学习好的人对自己的要求很高,所以觉得考不好就天塌了,认为自己学习好并且值得一份好工作的人也是一样,找不到符合自己预期的工作肯定也会觉得是侮辱,牛客上有很多名校大学生,肯定会存在这种好学生心态啊,“做题区”从来都不是贬义词,这是大部分普通人赖以生存的路径,这个有什么好嘲讽的,有“好学生心态”没有错,但是不要给自己太大的压力了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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