数据源:
处理代码:
select
t1.`id`,t1.`vip_level`,min(t1.`date`) as start_date,
max(t1.`date`) as end_date
from
(select
t1.*,date_sub(t1.`date`,t1.rk) as date_diff
from
(select
*,row_number() over (partition by `id`,`vip_level` order by `date`) as rk
from input) t1)t1
group by
t1.`id`,t1.`vip_level`,t1.date_diff
order by
t1.`id`,start_date
结果: