with t0 as
(
select
sales_date,
user_id,
dense_rank() over(partition by user_id order by sales_date) as ranking
from sales_tb
)
,t1 as
(
select
a.user_id,
count(distinct sales_date) as days_count
from
(
select
sales_date,
user_id,
date_sub(sales_date,interval ranking day) as dt
from t0
)a
group by a.dt,a.user_id
)
select
user_id,
max(days_count) as days_count
from t1
where days_count>=2
group by user_id
和连续登录天数一样的做法。使用开窗函数做统一特征再聚合即可

京公网安备 11010502036488号