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

SQL累计求和时如何去除MonthYear列的重复行?

解决MonthYear重复行问题

你的查询之所以会出现重复的MonthYear行,是因为原表中每个月份对应多条Solution条目记录,而窗口函数计算出的running_total在同一个月份里是完全相同的。要实现每个月份只显示一行,可以通过以下两种方式处理:

方法一:直接添加DISTINCT去重

这是最简单的方案,利用DISTINCT过滤掉完全重复的行(同一个MonthYear对应的running_total值一致):

SELECT DISTINCT
    CAST(TO_CHAR(FirstApprovalDate, 'YYYYMM') AS Int) AS MonthYear,
    COUNT(DISTINCT name) OVER (ORDER BY CAST(TO_CHAR(FirstApprovalDate, 'YYYYMM') AS Int) ASC) AS running_total
FROM 
    MP_Data.Solution
WHERE
    Published = 1 AND Hub <> 'pd'
ORDER BY
    MonthYear DESC

方法二:先去重月份与名称组合(更严谨)

如果原表中存在同一个name在同一个月份有多条审批记录的情况,先对MonthYear和name做去重处理,再计算累计总数,能避免重复统计同一名称,结果更准确:

WITH monthly_unique_names AS (
    -- 提取每个月份下的唯一名称
    SELECT DISTINCT
        CAST(TO_CHAR(FirstApprovalDate, 'YYYYMM') AS Int) AS MonthYear,
        name
    FROM 
        MP_Data.Solution
    WHERE
        Published = 1 AND Hub <> 'pd'
)
SELECT
    MonthYear,
    COUNT(DISTINCT name) OVER (ORDER BY MonthYear ASC) AS running_total
FROM 
    monthly_unique_names
GROUP BY
    MonthYear
ORDER BY
    MonthYear DESC

执行上述任意一种查询后,输出会简化为每个MonthYear仅显示一行,同时保留累计的running_total值:

MonthYear   running_total
-------------------------
202308      811
202307      805
202306      787
...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:16:05