您可以通过计算每个产品的订单数量来找到最受欢迎的产品。订单数量最多的产品将是最受欢迎的产品。
下面的脚本将根据所下订单的数量为您提供最受欢迎的产品。
;WITH cte_1
AS(
SELECT p.ProductID,ProductName, count(OrderID) CNT
FROM Products p
JOIN [Order Details] od ON p.ProductID=od.ProductID
GROUP BY p.ProductID,ProductName)
SELECT top 1 ProductName
FROM cte_1
ORDER BY CNT desc
如果您使用的是 SQL Server 2012 或任何更高版本,请使用 ' with ties' 获取具有相同订单数的多个产品。
;WITH cte_1
AS(
SELECT p.ProductID,ProductName, count(OrderID) CNT
FROM Products p
JOIN [Order Details] od ON p.ProductID=od.ProductID
GROUP BY p.ProductID,ProductName)
SELECT top 1 with ties ProductName
FROM cte_1
ORDER BY CNT desc
在您的示例代码中,您尝试拉出拥有最大库存的产品。由于您加入了其他表格(如订单详细信息等),因此您将获得同一产品的多个结果。如果您想获得最大库存的产品,您可以使用以下任何脚本。
SELECT ProductName
FROM Products P
WHERE P.UnitsInStock = (SELECT MAX(P.UnitsInStock) Items
FROM Products P)
或者
SELECT top 1 ProductName
FROM Products P
ORDER BY P.UnitsInStock desc
或者
SELECT top 1 with ties ProductName --use with ties in order to pull top products having same UnitsInStock
FROM Products P
ORDER BY P.UnitsInStock desc