我目前正在尝试从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兼容)
答案 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;