You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI按分组计算客户连续消费年数

计算客户连续会员年数(年份中断时重置)

原始数据

IDYear
A2019
A2020
A2021
A2022
B2019
B2021
B2022

期望结果

IDYearYrs_Cust
A20190
A20201
A20212
A20223
B20190
B20210
B20221

实现方案(SQL)

通过窗口函数标记连续年份分组,再在分组内计算连续年数:

WITH ranked_data AS (
    SELECT 
        ID,
        Year,
        -- 为每个连续年份段生成唯一分组ID
        SUM(CASE WHEN Year = LAG(Year) OVER (PARTITION BY ID ORDER BY Year) + 1 THEN 0 ELSE 1 END) 
            OVER (PARTITION BY ID ORDER BY Year) AS group_id
    FROM your_table
)
SELECT 
    ID,
    Year,
    -- 在分组内生成从0开始的连续计数
    ROW_NUMBER() OVER (PARTITION BY ID, group_id ORDER BY Year) - 1 AS Yrs_Cust
FROM ranked_data
ORDER BY ID, Year;

逻辑说明

  1. 标记连续分组:用LAG(Year) OVER (PARTITION BY ID ORDER BY Year)获取当前客户上一条记录的年份,判断当前年份是否是上一年的连续年份(差值为1)。如果不连续,则生成新的分组,通过SUM()累计得到每个连续段的group_id。
  2. 计算连续年数:在每个客户的每个连续分组内,用ROW_NUMBER()生成递增序号,减1后得到从0开始的连续会员年数。

内容的提问来源于stack exchange,提问作者waealu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 03:57:09