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

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

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

WITH events AS(
    SELECT 
        artical_id ,
        in_time as dt,
        1 as change_num
    FROM 
        tb_user_log 
    UNION ALL 
    SELECT 
        artical_id,
        out_time as dt ,
        -1 as change_num
    FROM 
        tb_user_log
),
current AS (
    SELECT 
        artical_id, 
        SUM(change_num)OVER(
            partition by artical_id order by dt,change_num desc 
        ) as current_view 
    FROM    
        events 
)
SELECT 
    artical_id ,
    max(current_view) as max_uv
FROM 
    current
where 
    artical_id != 0 
group by 
    artical_id 
order by 
    max_uv desc ; 

这道题有点难度,想到了python的滑窗问题。要建立一个计数器,另外排序的时候,时间相同先进后出。

最后不要忘了artical_id != 0 这个条件。这道题也可以统计,实时浏览量

全部评论

相关推荐

03-23 23:00
黄淮学院 Java
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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