with t1 as(
    select user_id,
           date(log_time) as log_time,
           rank() over(partition by user_id order by log_time) as rk
    from login_tb
    where user_id in (select user_id from register_tb)
),
t2 as(
    select user_id,
           date_sub(log_time,interval rk day) as newdate
    from t1
)
select user_id 
from t2
group by user_id having count(newdate)>=3
order by user_id

创建多个虚拟表,需用逗号隔开

with 表名1 as(

select...),

表名2 as(

select...)