好经典的题,第一次接触也是没思路,看了置顶回答才恍然大悟。自己再总结总结:
①某时间进入就记为1,某时间离开就记为-1,通过把时间点用±1进行编码得到可以累加的列;
②用窗口函数sum对id分组、根据时间序列和±1编码的先后排序、累加,那么任一时间点的瞬时人数就确定了

select artical_id, max(uv) max_uv
from
(
select artical_id, 
sum(diff)over(partition by artical_id order by a, diff desc) as uv
from(
select artical_id, in_time a, 1 diff
from tb_user_log 
where artical_id !=0
union all 
select artical_id, out_time a, -1 diff
from tb_user_log 
where artical_id !=0) as tb1
) as tb2
group by artical_id
order by max_uv desc