with a as(
    select 
        user_id,
        date(log_time) as time,
        rank() over(partition by user_id order by date(log_time)) as rk
    from register_tb join login_tb using(user_id)
    group by user_id,date(log_time)
),
b as(
    select 
        user_id,
        count(*) as number
    from a
    group by user_id,time-rk
)
select 
    user_id
from b
where number>=3;