with t as( #题目不够严谨,未考虑到访问时间和离开时间隔天的情况
select
user_id,
visit_time time
from visit_tb
union all
select
user_id,
if(datediff(leave_time,visit_time) != 0,leave_time, 0 ) time
from visit_tb
)
select
vip,
count(*) visit_nums,
count(distinct user_id) visit_users
from t join uservip_tb using(user_id)
where time != 0
group by vip
order by visit_nums desc



京公网安备 11010502036488号