with t as
(
select t.artical_id,t.out_time,t1.in_time,TIMESTAMPDIFF(second,t1.in_time,t.out_time) as time_gap,
       RANK()over(partition by artical_id order by out_time)-1 as rn
from tb_user_log t join tb_user_log t1 on t.artical_id=t1.artical_id
where t.artical_id<>0 and t1.artical_id<>0
)
select artical_id,max(uv) as max_uv
from
(select artical_id,out_time,sum(time_gap>=0)-rn as uv
from t
group by artical_id,out_time) t1
group by artical_id
order by max_uv DESC