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

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

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


select artical_id,max(uv_cnt) as max_uv
from(
select artical_id,sum(uv) over(partition by artical_id order by in_time,uv desc ) as uv_cnt 
from
(select uid,artical_id,in_time,1 as uv
from tb_user_log
union all
select uid,artical_id,out_time,-1 as uv
from tb_user_log
) t1 
) t2
where artical_id > 0
group by artical_id
order by max_uv desc
  1. 通过连接查询 列举用户的登入时间和登出时间 登入记为1 登出记为0 记作uv字段
  2. 通过sum窗口函数 按文章分组,登入时间和uv 降序排序 进行累计
  3. 按登入时间先排是确保按照时间
  4. 按uv排序 是让为1的 先计算
  5. 最后按照文章分组 筛选文章id大于0的
全部评论

相关推荐

已注销:bro不如吃顿疯狂星期四
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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