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

SQL技术问询:如何在SQL中对相同产品的数量进行求和?(基于W3schools SQL Tryit Editor环境)

解决SQL中相同产品数量求和的问题

没问题,我完全懂你的需求——你现在的查询是把每一条订单明细都单独列出来了,所以同一个产品在不同订单里出现时,数量会分开显示,没有合并计算。要实现相同产品的数量求和,你需要用到聚合函数和分组子句,具体修改如下:

首先,你需要用SUM()函数对OrderDetails.Quantity进行求和,然后通过GROUP BY子句按照产品名称来分组,这样相同产品的所有数量就会被累加在一起。

修改后的SQL语句如下:

SELECT 
  Products.ProductName, 
  SUM(OrderDetails.Quantity) AS TotalQuantity,
  Customers.Country 
FROM Orders 
JOIN OrderDetails ON Orders.OrderID = OrderDetails.OrderID 
JOIN Products ON OrderDetails.ProductID = Products.ProductID 
JOIN Customers ON Orders.CustomerID = Customers.CustomerID 
WHERE Customers.Country = 'Germany'
GROUP BY Products.ProductName, Customers.Country;

关键修改点说明:

  • SUM(OrderDetails.Quantity) AS TotalQuantity:用SUM函数计算每个产品的总数量,并用AS给结果列起一个清晰的别名,方便阅读;
  • GROUP BY Products.ProductName, Customers.Country:因为你筛选的是德国的客户,分组时包含Customers.Country是为了符合SQL的聚合规则(当然也可以只按Products.ProductName分组,毕竟WHERE已经限定了Country='Germany',两种写法都能得到正确结果);
  • 去掉了原来单独的OrderDetails.Quantity列,因为现在我们要的是汇总后的总数量,而不是每条订单明细的单独数量。

这样执行之后,像"Boston Crab Meat"这类重复的产品就只会显示一行,对应的TotalQuantity就是该产品所有德国订单中的数量总和啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 12:29:09