SQL需要根据数量获得最受欢迎的产品

时间:2012-06-14 10:22:32

标签: sql sql-server

我目前正在尝试从MSSQL数据库中获取最受欢迎的productID。这就是表格的样子(带有一些虚拟数据):

的OrderItems:

+--+-------+--------+---------+
|ID|OrderID|Quantity|ProductID|
+--+-------+--------+---------+
| 1|      1|       1|        1|
| 2|      1|       1|        2|
| 3|      2|       1|        1|
| 4|      2|      50|        2|

可以忽略OrderID字段,但我需要从此表中找到最受欢迎的ProductID,按照它们发生的频率对它们进行排序。结果集应该如下所示:

+--------+
|PoductID|
+--------+
|       2|
|       1|

由于ProductID 2的总数量为51,因此需要首先出现,然后是ProductID 1,其总数量为2.

(注意:查询需要与MSSQL-2008兼容)

2 个答案:

答案 0 :(得分:6)

SELECT
  productID
FROM
  yourTable
GROUP BY
  productID
ORDER BY
  SUM(Quantity) DESC

GROUP BY允许SUM(),但您不必在SELECT中使用它就可以在ORDER BY中使用它。

答案 1 :(得分:3)

select ProductID
from OrderItems
group by ProductId
order by sum(Quantity) desc;