with b as (select day(fdate), user_id, day(fdate) - row_number() over (partition by user_id order by fdate) diff from tb_dau where fdate between '2023-01-01' and '2023-01-31'), d as (select user_id, count(user_id) over (partition by user_id,diff) days from b) select user_id, max(days) max_consec_days from d group by user_id;