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