select t.user_id as user_id from (select l.user_id, date(l.log_time) as log_day, row_number() over(partition by l.user_id order by date(l.log_time) desc) as timerank, date_sub(date(l.log_time),interval (row_number() over(partition by l.user_id order by date(l.log_time) desc)) day) as base_day from login_tb l left join register_tb r on l.user_id=r.user_id where r.user_id is not null) t group by t.user_id having count(t.base_day)>=3 order by t.user_id asc;