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

如何在SQL中对数据表重复记录按分组求和并去重

SQL 去重聚合解决方案

修正后查询语句

你原有SQL中的CASE表达式存在逻辑错误:当前写法是字符串常量与数字比较,永远不会返回匹配结果,需要替换为你实际的业务判断逻辑,以下是符合需求的完整语句:

SELECT 
    Country,
    SUM(Price) AS total_price,
    CASE
        -- 请将下方risk_type替换为你实际用于判断风险类型的字段名
        WHEN risk_type = 'Credit' THEN 'Credit Risk'
        WHEN risk_type = 'Equities' THEN 'Eq Risk'
    END AS Model
FROM finance
-- 过滤掉瑞士CDR_CCF=1的记录,后续单独处理
WHERE NOT (Country = 'CH' AND CDR_CCF = 1)
GROUP BY Country, Model

UNION ALL
-- 单独处理瑞士地区CDR_CCF=1时仅返回一条的要求
SELECT 
    'CH' AS Country,
    SUM(Price) AS total_price,
    -- 可根据业务需求修改此处Model的固定取值
    'Combined Risk' AS Model
FROM finance
WHERE Country = 'CH' AND CDR_CCF = 1

逻辑说明

  • 核心通过GROUP BY Country, Model实现按「国家+风险类型」分组,每组仅返回一条记录,SUM(Price)用于计算分组内所有Price字段的总和
  • 若你需要保留原查询中的OB字段,需明确分组内OB的取值规则,比如取分组内第一个OB值可写为MIN(OB) AS OB,并将该字段加入GROUP BY列表
  • 瑞士地区的特殊需求通过UNION ALL实现:当CDR_CCF取值为1时,瑞士所有记录合并为一条返回,你可以根据业务需要调整该条记录的Model字段取值

参考示意图

参考示意图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:54:05