我想收到來自
現在,我嘗試了以下方法:
WITH cte AS (
SELECT
OrderID,
Quantity,
ProductID,
ROW_NUMBER() OVER(PARTITION BY OrderID ORDER BY OrderID) as row_num
FROM [Order Details]
)
SELECT *
FROM cte
WHERE row_num IN (SELECT row_num FROM cte WHERE row_num <=10)
ORDER BY OrderID;
ROW_NUMBER()認為這現在為每個訂單檢索 10 行,它們不是根據銷售數量訂購的,并且沒有正確檢索最暢銷的產品,因為對于某些訂單,根據我在 SQL中的函式獲得的行號,最暢銷的產品超出了前 10 行.

編輯:例如,如果我有 10 個訂單,每個訂單有 20 個產品,那么我希望每個產品前 5 個,所以結果表總共應該有 50 行。
uj5u.com熱心網友回復:
編輯后:
WITH cte AS (
SELECT
OrderID,
Quantity,
ProductID,
ROW_NUMBER() OVER(PARTITION BY OrderID ORDER BY Quantity DESC) as row_num
FROM [Order Details]
)
SELECT *
FROM cte
WHERE row_num <= 5
ORDER BY OrderID;
uj5u.com熱心網友回復:
你應該做一個
SELECT DISTINCT productid FROM OrderDetails ORDER BY quantity GROUP BY productId LIMIT 5
至少這是mysql語法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/454757.html
上一篇:需要查詢以逗號分隔的列上的表連接
