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

PostgreSQL如何对两列组合去重后计算valid_entries的总和

问题原因

你写的SQL存在两个核心问题:

  • 子查询仅返回了count(distinct(codes))的统计结果,没有包含valid_entries字段,外层sum函数无法找到对应字段完成计算
  • 去重逻辑仅针对Codes单列,没有按照你的需求对valid_entries和Codes两列组合去重,逻辑不符合预期

正确实现

你可以先通过子查询完成两列组合去重,再对去重后的valid_entries求和即可,写法如下:

SELECT SUM(valid_entries) AS total_valid
FROM (
    -- 对valid_entries和Codes两列组合去重,保留唯一行
    SELECT DISTINCT valid_entries, Codes
    FROM points
    WHERE participant_id = '123'
) AS distinct_point_rows;

如果你后续需要对分组做更多统计,也可以用GROUP BY的写法实现同样效果:

SELECT SUM(valid_entries) AS total_valid
FROM (
    SELECT valid_entries
    FROM points
    WHERE participant_id = '123'
    -- 按两列分组等价于组合去重
    GROUP BY valid_entries, Codes
) AS grouped_point_rows;

两种写法的执行结果都是你预期的4。


内容的提问来源于stack exchange,提问作者Xux.rd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:57:03