【发布时间】:2017-11-27 13:30:31
【问题描述】:
大家好,过去一天我一直在努力解决这个问题,但我似乎无法弄清楚。
我的任务是从名为 NORTHWIND 的流行开源数据库中找出每个国家/地区销量最高的产品:https://northwinddatabase.codeplex.com
我能够进入这个阶段,这是我在 SQL Server 中的代码:
--Get most sold product for each country
WITH TotalProductsSold AS
(
SELECT od.ProductID, SUM(od.Quantity) AS TotalSold
FROM [Order Details] AS od
GROUP BY od.ProductID
)
SELECT MAX(TotalProductsSold.TotalSold) AS MostSoldQuantity, s.Country --,p.ProductName
FROM Products AS p
INNER JOIN TotalProductsSold
ON TotalProductsSold.ProductID = p.ProductID
INNER JOIN Suppliers AS s
ON s.SupplierID = p.SupplierID
GROUP BY s.Country
ORDER BY MostSoldQuantity DESC
这给了我以下结果:
这很好,但我希望找出 MostSoldQuantity 的产品名称。
非常感谢!
【问题讨论】:
-
我假设您知道您提出的答案不起作用,因为您已将其删除。重要的原因是
MAX(productID)与MAX(TotalSold)完全没有关系,它们是独立计算的。 (您创建数据集,在数据集中创建组,在每个组中您获得最高的 TotalSold 并分别获得 ProductID 的最高值。 没有 SQL 表达式“获取关联的 productIDMAX(TotalSold)的结果是在 SELECT 列表中的另一个表达式中计算的`")。 -
是的,当我检查 productID 与最畅销的数量不匹配时,我就意识到
-
我现在正在查看您的答案,谢谢您的时间:)
标签: sql sql-server database group-by northwind