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

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

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

# 坑1:统计每篇文章同一时刻最大在看人数,如果同一时刻有进入也有离开时,先记录用户数增加再记录减少
# ORDER BY dt,uv DESC 按照时间升序、uv降序做累加
# 坑2:artical_id-文章ID为0表示用户在非文章内容页
# 所以需要用 WHERE artical_id != 0 过滤

# 解读这个窗口函数:order by+窗口范围,也就是说,每一个dt都要加上对应的uv,对uv进行sum,总共dt次;
# 最终在外层取出max的那个,为什么要外层,我也不知道,max加在里面会报错; 求告知原因orz
# SQL_ERROR_INFO: "You cannot use the window function 'sum' in this context.'"

SELECT artical_id,MAX(uv_cnt)max_uv
FROM
(
    SELECT artical_id, SUM(uv) OVER(PARTITION BY artical_id ORDER BY dt,uv DESC) uv_cnt 
    FROM
        (
        SELECT id,artical_id, in_time AS dt, 1 AS uv #为所有进去的时间记录uv+1,一个用户进去多次也会记录多次,所以实际uid并不重要
        FROM tb_user_log
        UNION 
        SELECT id,artical_id, out_time AS dt, -1 AS uv
        FROM tb_user_log
        ) t1 WHERE artical_id != 0
) t2
GROUP BY artical_id
ORDER BY max_uv DESC

全部评论

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
10-09 00:50
已编辑
长江大学 算法工程师
不期而遇的夏天:1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务