select artical_id,max(uv) as max_uv
from (
  select artical_id,dt,sum(diff)over(partition by artical_id order by dt,diff desc) as uv
  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 ) t1
     ) t2
group by artical_id
order by max_uv desc

看了其他大神的答案才写出来的,请教一下,为啥t2里不用加group by artical_id