with t1 as (
select ub.vip,count(*) as visit_nums  from visit_tb
as vb 
left join uservip_tb
as ub 
on vb.user_id=ub.user_id
group by ub.vip),
t2 as (
select ub.vip,count(distinct vb.user_id) as visit_users  from visit_tb
as vb 
left join uservip_tb
as ub 
on vb.user_id=ub.user_id
group by ub.vip)
select t1.vip ,visit_nums,visit_users
from t1 
left join t2
on t1.vip=t2.vip
order by visit_nums desc ,visit_users desc
;