select artical_id ,max(viwer) as max_uv from (select artical_id,dt, sum(diff)over(partition by artical_id order by dt,diff DESC) as viwer from (select artical_id,in_time as dt ,1 as diff from tb_user_log where artical_id!=0 #进入的人 UNION ALL select artical_id,out_time as dt ,-1 as diff from tb_user_log where artical_id!=0 #出去的人 order by artical_id,dt ) a) b group by artical_id order by max_uv desc