select 
    t1.vip, max(t1.rn) as visit_nums, count(distinct t1.user_id) as visit_users
from(
    select 
        v.user_id, v.visit_time, v.leave_time, u.vip,
        row_number()over(partition by u.vip order by visit_time) as rn
    from 
        visit_tb v 
    left join 
        uservip_tb u on v.user_id = u.user_id
)t1
group by 
    t1.vip
order by 
    visit_nums desc;