with a as(
select
*,
rank() over(partition by user_id order by fdate) as rk
from tb_dau
where fdate between '2023-01-01' and '2023-01-31'
),
b as(
select
user_id,
count(*) as number,
row_number() over(partition by user_id order by count(*) desc) as rk2
from a
group by user_id,fdate-rk
)
select
user_id,
number as max_consec_days
from b
where rk2=1
order by user_id ;

京公网安备 11010502036488号