WITH t1 AS( SELECT user_id, DATE(fdate) AS fdate FROM tb_dau ), t2 AS( SELECT user_id, fdate, ROW_NUMBER() OVER( PARTITION BY user_id ORDER BY fdate ASC ) AS rk FROM t1 ), t3 AS( SELECT user_id, DATE_SUB(fdate, INTERVAL rk DAY) AS consec_group, COUNT(1) AS cnt FROM t2 GROUP BY user_id, consec_group ...