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
相关产品推荐
相关产品推荐

