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

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

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

with merge_tb_user_log as(
  select
    artical_id as artical_id,
    in_time as dt,
    1 as flag
  from
    tb_user_log
  where
    artical_id <> 0
  union all
  select
    artical_id as artical_id,
    out_time as dt,
    -1 as flag
  from
    tb_user_log
  where
    artical_id <> 0
),
caculate_merge_tb_user_log as(
  select
    artical_id,
    dt,
    sum(flag) over(
      partition by artical_id
      ORDER BY
        dt,
        flag desc
    ) per_cnt
  from
    merge_tb_user_log
)
SELECT
  artical_id,
  max(per_cnt) as max_uv
FROM
  caculate_merge_tb_user_log
GROUP BY
  artical_id
ORDER BY
  max_uv desc;

-- 开窗函数累计统计(通过order by,子行非总数)

-- 将开始时间和离开时间标记后,作为同一时间序列。

-- 累计统计,求最值

全部评论

相关推荐

11-23 17:35
已编辑
济宁学院 Java
不想做程序员:面试官:蓝桥杯三等奖?你多去两次厕所都能拿二等吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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