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

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

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

--同时阅读文章的最大在线人数,刚开始真的挺烧脑子的,但是呢从另一个方面想,对进出者两个进行编码,随后进行窗口函数的聚合,不就可以求出最大的在线人数来嘛,但是又存在一个问题那就是同时进行的人有一个卡出去了呢,这个就得在窗口函数的排序中对编码进行降序排序,先统计同一时间内进入的再统计退出的
WITH base AS (  
    SELECT 
        artical_id,
        in_time AS time,
        1 AS uv
    FROM tb_user_log 
    WHERE artical_id <> 0

    UNION ALL

    SELECT 
        artical_id,
        out_time AS time,
        -1 AS uv
    FROM tb_user_log
    WHERE artical_id <> 0
),

tongji AS (
    SELECT 
        artical_id,
        time,
        uv,
        SUM(uv) OVER (PARTITION BY artical_id ORDER BY time, uv DESC) AS juhe 
    FROM base
)

SELECT 
    artical_id,
    MAX(juhe) AS max_uv
FROM tongji 
GROUP BY artical_id
ORDER BY max_uv DESC;

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 17:51
点赞 评论 收藏
分享
猫头夜鹰:图书管理系统能有面试就怪了,放十年前都不行
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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