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

#题目的关键在这句:如果同一时刻有进入也有离开时,先记录用户数增加再记录减少
SELECT artical_id,MAX(MAX_V) AS max_uv
FROM (
select artical_id,(
sum(#每个开始时间段和所有时间段对比,在相同时间段的+1
if((checkt_in>=time_rang1 and checkt_in<=time_rang2),1,0)
)+
sum(#如果结束时间刚好是其他人开始的时间段则-1
if(checktime_out=time_rang1,-1,0)
)) as MAX_V
from
(
select t1.artical_id ,t1.uid,
t1.in_time as checkt_in,t1.out_time as checktime_out,
t2.in_time as time_rang1,t2.out_time as time_rang2
from tb_user_log t1,tb_user_log t2
where t1.artical_id=t2.artical_id and t1.artical_id <> 0
order by t1.artical_id,t1.in_time
)t
group by artical_id,uid
)T2
group by artical_id
ORDER BY max_uv DESC

全部评论

相关推荐

01-15 13:52
已编辑
河南大学 Java
六年要多久:标准头像,不吃香菜😂
点赞 评论 收藏
分享
02-01 19:48
门头沟学院 Java
神哥了不得:(非引流)直接暑期吧,没时间日常了,老鱼简历把水印去了,或者换个模板,简历字体大小都不太行,建议换2个高质量的项目,面试应该还会再多一些
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务