如何在SQL中仅对指定产品的数量进行求和?
解决SQL中仅统计特定产品数量的问题
当然可以实现你想要的效果!你的思路方向是对的,但原语句的语法需要调整——SQL里不能直接在SUM里用WHEN,得结合条件判断函数来筛选特定产品的数量。
通用解决方案(适用于大多数数据库:MySQL、PostgreSQL、SQL Server等)
使用CASE WHEN语句来针对性统计产品A的数量:
SELECT `ORDER`, SUM(CASE WHEN PRODUCT = 'A' THEN QTD ELSE 0 END) AS TOTAL_A_QUANTITY FROM your_order_table GROUP BY `ORDER`;
简化版(仅适用于支持IF函数的数据库,比如MySQL)
如果你的数据库支持IF函数,还可以用更简洁的写法:
SELECT `ORDER`, SUM(IF(PRODUCT = 'A', QTD, 0)) AS TOTAL_A_QUANTITY FROM your_order_table GROUP BY `ORDER`;
逻辑说明
- 这两个语句的核心逻辑是:遍历每一行数据,仅当
PRODUCT等于'A'时,才将该行的QTD计入求和;否则用0填充,不影响最终总和。 - 以你给出的示例数据为例,执行后会得到:
ORDER | TOTAL_A_QUANTITY 200 1
注意事项
- 因为
ORDER是SQL的关键字,所以最好用反引号(`)或者双引号把它括起来,避免语法错误。 - 如果
PRODUCT是字符串类型,一定要给'A'加上单引号。 - 别忘了用
GROUP BY按订单分组,否则会得到所有订单中产品A的总数量,而不是每个订单单独的统计值。
内容的提问来源于stack exchange,提问作者Jonathan Livingston Seagull
相关产品推荐
相关产品推荐

