with t as
(select
user_id
,(day(log_time) - rank()over(partition by user_id order by log_time)) log_initial_rank
from 
login_tb)
,
t2 as (
select 
user_id,
count(*) days
from 
t
group by user_id, log_initial_rank)

select 
user_id
from
t2 
where days >= 3 and user_id in (
    select
    user_id
    from
    register_tb
)
order by user_id