WITH t AS( SELECT fdate, user_id, DENSE_RANK() over (PARTITION BY user_id ORDER BY fdate) AS rk FROM tb_dau WHERE YEAR(fdate) = 2023 AND MONTH(fdate) = 1 ), t1 AS( SELECT t.*, DATE_SUB(fdate, INTERVAL rk DAY) AS diff_day FROM t ), t2 AS ( SELECT user_id, COUNT(diff_day) AS consec_days FROM t1 GROUP ...