select
log_date,
user_id from
(
select
*,
date_sub(log_date,interval rank_num day) real_date
from
(
select
*,
row_number() over (partition by user_id order by log_date ) as rank_num
from
(
select
distinct date(login_date) as log_date ,user_id
from study.user_login
) a
) b
) c
group by real_date, user_id HAVING COUNT(*) >=7