with t1 as (
    select 
        user_id,
        fdate,
        date_sub(fdate,interval (row_number() over (partition by user_id order by fdate)-1) day) as gre_date
from tb_dau),
t2 as (
    select 
        user_id,
        gre_date,
        count(*) as consecutive_days
    from t1
    group by user_id,gre_date
)
select user_id,max(consecutive_days) as max_consec_days
from t2
group by user_id
order by user_id;