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

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

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

  • 难点:瞬时计算
  • 思路:
    • 找出所有用户观看的时刻(包含进入与离开,注意去重)作为时间轴
    • 计算每个时间点在观看的人数,即进入时刻不大于该时刻且离开时刻不小于该时刻
    • 对时间点和文章id分组汇总,计算出每个时刻点每篇文章的观看人数
    • 进一步对文章id分组汇总,计算出每篇文章在所有时刻中最大的观看人数
with tmp as
         ((select in_time as dt
           from tb_user_log
           group by in_time
           order by in_time
          )
          union
          (select out_time as dt
           from tb_user_log
           group by out_time
           order by out_time))

select t.artical_id,
       max(t.uv) as max_uv
from (
         select t1.dt, t2.artical_id, count(uid) as uv
         from tmp as t1
                  left join tb_user_log as t2 on t2.in_time <= t1.dt and t2.out_time >= t1.dt
         where t2.artical_id != 0
         group by t1.dt, t2.artical_id
     ) as t
group by t.artical_id
order by max_uv desc;
全部评论

相关推荐

我的offer呢😡:这不才9月吗,26到明年毕业前能一直找啊,能拿下提前批,转正的,offer打牌的都是有两把刷子的,为什么非要跟他们比。如果别人是9本硕+金牌+好几段大厂实习呢?如果别人是双非通天代呢?如果别人是速通哥呢?,做好自己就行了,我们做不到他们一样提前杀死比赛,但晚点到终点也没啥关系吧
双非应该如何逆袭?
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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