select user_id
from 
(select user_id,date(log_time) log_time,
date_sub(date(log_time),interval row_number()over(partition by user_id order by log_time) day) log_gap
from login_tb 
where user_id in (select user_id from register_tb)
) t1 
group by user_id, log_gap
having count(log_gap) >=3
order by user_id;
其实没必要把log_gap统计出来再取值,直接筛选掉就好了。
*date函数还挺关键的,不然log_gap出来就是带时间的,很难一致并统计了