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

编写数据去重查询:POTENTIAL_MASTER表求和时仅保留TAMIL/TELUGU其一

解决方法

针对你的需求,这里提供几种可靠的SQL实现方式,核心思路是仅保留TAMIL和TELUGU中的一个记录参与求和,避免重复计算:


方法1:分组合并同类产品

把TAMIL和TELUGU合并为一个分组,利用两者潜力值相同的特性,取该组的潜力值后再求和:

SELECT SUM(potential) AS total_potential
FROM (
    -- 将TAMIL和TELUGU归为同一分组,其他产品保持原样
    SELECT 
        CASE 
            WHEN PRODUCT IN ('TAMIL', 'TELUGU') THEN 'INDIA_SOUTH'  -- 自定义分组名,不影响结果
            ELSE PRODUCT 
        END AS product_group,
        MAX(potential) AS potential  -- 因两者值相同,MAX/MIN/AVG结果一致
    FROM POTENTIAL_MASTER
    GROUP BY product_group
) AS grouped_data;

方法2:通过UNION过滤重复产品

直接排除TELUGU,再结合UNION确保TAMIL被保留(即使之前的过滤逻辑意外漏掉):

SELECT SUM(potential) AS total_potential
FROM (
    -- 先取除TELUGU外的所有产品
    SELECT PRODUCT, POTENTIAL FROM POTENTIAL_MASTER WHERE PRODUCT != 'TELUGU'
    -- 再单独取TAMIL,UNION会自动去重,不会重复添加
    UNION
    SELECT PRODUCT, POTENTIAL FROM POTENTIAL_MASTER WHERE PRODUCT = 'TAMIL'
) AS unique_products;

方法3:条件过滤(最简单直接)

因为TAMIL和TELUGU潜力值始终相同,直接过滤掉TELUGU即可;如果担心TAMIL不存在的情况,可以加个兜底判断:

SELECT SUM(potential) AS total_potential
FROM POTENTIAL_MASTER
WHERE 
    PRODUCT != 'TELUGU'
    -- 兜底:如果TAMIL不存在,才保留TELUGU
    OR (PRODUCT = 'TELUGU' AND NOT EXISTS (SELECT 1 FROM POTENTIAL_MASTER WHERE PRODUCT = 'TAMIL'));

为什么你之前的DISTINCT/UNION没生效?

如果直接用SUM(DISTINCT potential),会误把其他产品中相同的潜力值也去重;而如果只是简单用UNION后直接求和,可能是因为没正确限定仅排除TELUGU,导致两个产品都被保留。上面的方法都是针对这两个特定产品做精准处理,不会影响其他产品的计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 04:16:07