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

使用SQL对多列中的正值进行聚合的实现方法

用单条SQL实现多列正值的聚合求和

当然可以用单条SQL语句直接实现这个需求,完全不需要创建临时表——而且这种写法对大规模数据集也很友好,因为只需要扫描一次表就能完成所有计算。

核心思路

我们可以把SUM()聚合函数和条件判断结合起来,只累加每列中的正值。这里有两种常用写法:

写法1:CASE表达式(兼容性拉满)

这种写法几乎支持所有SQL数据库,不会有兼容性问题:

SELECT
  SUM(CASE WHEN Column1 > 0 THEN Column1 ELSE 0 END) AS Column1_Positive_Sum,
  SUM(CASE WHEN Column2 > 0 THEN Column2 ELSE 0 END) AS Column2_Positive_Sum,
  SUM(CASE WHEN Column3 > 0 THEN Column3 ELSE 0 END) AS Column3_Positive_Sum
FROM
  Sample_Table;

写法2:GREATEST()函数(更简洁)

如果你的数据库支持GREATEST()函数(比如MySQL、PostgreSQL、Oracle这些主流数据库都支持),可以用更简洁的写法:

SELECT
  SUM(GREATEST(Column1, 0)) AS Column1_Positive_Sum,
  SUM(GREATEST(Column2, 0)) AS Column2_Positive_Sum,
  SUM(GREATEST(Column3, 0)) AS Column3_Positive_Sum
FROM
  Sample_Table;

针对你的示例表的运行结果

执行上面任意一条SQL,都会得到你想要的结果:

Column1_Positive_SumColumn2_Positive_SumColumn3_Positive_Sum
599

为什么适合大规模数据集?

这两种写法都只需要对表做一次全表扫描,不会产生额外的临时表或多次扫描的开销,在数据量很大的时候,执行效率会比用临时表高很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:42:00