2012-06-14 25 views
2

我目前正試圖從我的MSSQL數據庫中獲得最受歡迎的productID。這是該表的樣子(只要一點虛數據):SQL需要獲得最受歡迎的產品也取決於數量

的OrderItems:

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

OrderID字段可以忽略不計,但我需要找到這個表,排序最流行的產品ID的他們的發生頻率。結果集應該是這個樣子:

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

由於產品ID 2有51總量,它需要走出第一,其次是產品ID 1只具有2

總量(注:查詢必須兼容回到MSSQL-2008)

回答

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

GROUP BY允許SUM(),但你不必使用它在SELECT被允許在ORDER BY使用它。

+0

太棒了,像魅力一樣工作。我們使用數量,但是我們使用ORDER BY Count(*)而不是SUM(數量)。沒有期望SUM以這種方式行事..它會讓我接受答案 – JakeJ

+0

集合函數應用於由group by子句定義的每個組:) –

3
select ProductID 
from OrderItems 
group by ProductId 
order by sum(Quantity) desc; 
相關問題