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

如何在SELECT中结合SUM、WHERE子句与GROUP BY实现条件求和?

实现条件分组求和并返回NULL值的SQL方案

你可以通过以下两种常见方式实现需求:

通用SQL写法(适用于所有主流数据库)

使用CASE WHEN语句在求和时进行条件判断,当不满足类型条件时返回NULL,SUM函数会自动忽略NULL值,若分组内无对应类型的数据,最终求和结果即为NULL:

SELECT 
    category, 
    subcategory, 
    SUM(CASE WHEN type = 'A' THEN value ELSE NULL END) AS sumA,
    SUM(CASE WHEN type = 'B' THEN value ELSE NULL END) AS sumB
FROM table 
GROUP BY category, subcategory

简洁写法(部分数据库支持,如PostgreSQL)

部分数据库支持FILTER子句直接对聚合函数添加过滤条件,语法更直观,无匹配数据时同样返回NULL:

SELECT 
    category, 
    subcategory, 
    SUM(value) FILTER (WHERE type = 'A') AS sumA,
    SUM(value) FILTER (WHERE type = 'B') AS sumB
FROM table 
GROUP BY category, subcategory

这两种写法都会输出你期望的结果:仅包含A类型数据的分组,sumB列显示NULL;同时包含A、B类型数据的分组,两列均返回对应求和值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:20:31