如何获得最畅销商品的列表/结果

IEn*_*ble 2 mysql

我正在尝试使用 SQL 获取我最畅销产品的结果。

我的表order_items有以下列。

id|product_id|qty
Run Code Online (Sandbox Code Playgroud)

由于有一个QTY字段,我必须以某种方式按产品 ID 对每个字段进行计数或分组,然后对数量求和,然后只返回最畅销的 5 个项目。

所以数据看起来有点像下面。

id|product_id|qty
-------------------------
 1|   1      |   1
 2|   1      |   3 
 3|   2      |   3 
 4|   2      |   1 
 5|   1      |   7
Run Code Online (Sandbox Code Playgroud)

... 等等

不确定如何解决这个问题,非常感谢任何帮助。

使用的数据库系统是 MySQL

Han*_*non 7

假设 SQL Server,我可能会使用:

SELECT TOP(5) ProductID, SUM(Quantity) AS TotalQuantity
FROM order_items
GROUP BY ProductID
ORDER BY SUM(Quantity) DESC;
Run Code Online (Sandbox Code Playgroud)

这将返回前 5 名最畅销的产品。

由于SUM(Quantity)也包含在 SELECT 子句中,您可以在 ORDER BY 中引用其别名,而不是重复表达式:

...
ORDER BY TotalQuantity DESC;
Run Code Online (Sandbox Code Playgroud)


Bla*_*dow 5

假设 MySQL:

SELECT product_id, SUM(qty) AS TotalQuantity
FROM order_items
GROUP BY product_id
ORDER BY SUM(qty) DESC
LIMIT 5
Run Code Online (Sandbox Code Playgroud)

这是SQLFIDDLE