表结构:
订单OrderID,OrderStatusID,......
订单明细ODID,ODProductID,ODProductQty,ODOrderID
产品ProductID,ProductName ...
到目前为止,我的SQL:
SELECT * FROM Products
INNER JOIN OrderDetails ON Products.ProductID = OrderDetails.ODProductID
INNER JOIN Orders ON OrderDetails.ODOrderID = Orders.OrderID
where Orders.OrderStatusID = '5'
OrderStatusID必须为5(对于已交付的订单)。
我只希望结果是最畅销产品的ProductName和NoOfProducts。
可以像销量最高的4种产品一样。
最佳答案
您必须按产品分组并汇总。
然后对按销售数量减少的结果进行排序,并将结果限制为4种产品:
SELECT p.ProductID, p.ProductName, COUNT(DISTINCT d.ODID) NoOfProducts
FROM Products p
INNER JOIN OrderDetails d ON p.ProductID = d.ODProductID
INNER JOIN Orders o ON d.ODOrderID = o.OrderID
WHERE o.OrderStatusID = '5'
GROUP BY p.ProductID, p.ProductName
ORDER BY NoOfProducts DESC
LIMIT 4
关于mysql - 获取最畅销产品的复杂SQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58788113/