with t1 as( select lt.user_id, date_format(log_time,'%Y-%m-%d') log_date, dense_rank()over(partition by lt.user_id order by date_format(log_time,'%Y-%m-%d')) drn from register_tb rt join login_tb lt using(user_id) ), t2 as( select user_id, log_date, date_sub(log_date,interval drn day) diff_date from t1 ) select distinct user_id from t2 group by user_id,diff_date having count(distinct log_date)>=3 order by user_id