2013-01-17 59 views
1

我有一個ordered_products表,其中包含所有訂購的產品。假設我有一個叫做trouser1的產品。當我有例如order1和order2和這兩個訂單就已經trouser1增加ordered_products:一種計算列項目的方法

order_id=1 name=trouser1 amount=1 
order_id=2 name=trouser1 amount=1 

現在我要讓銷售產品的前10名名單,但同樣的產品需要在我的表顯示一次但數額加在一起。

我試過類似如下:

SELECT * 
FROM ordered_products 
GROUP BY naam 
ORDER BY aantal DESC 
SUM(amount) 
WHERE name NOT UNIQUE 

它不工作,是有一些方法來做到這一點?

+0

'GROUP BY naam'附近的錯字應該是'GROUP BY name'。 – Rikesh

回答

3

這將顯示銷售產品的前10名,

SELECT name, SUM(amount) totalAmount 
FROM ordered_products 
GROUP BY name 
ORDER BY totalAmount DESC 
LIMIT 10 

獲得更好的性能,在name列提供索引。

+0

'ORDER BY' ..'DESC' :) – hjpotter92

+0

@BackinaFlash正確':D' –

+0

它完美的工作非常感謝! – DaViDa

0
Select top 10 name, sum(amount) 
from ordered_products 
group by name 
order by sum(amount) desc 

它應該工作。 ;)你只需要顯示你正在計算的總和。不只是按順序排列。 *不會爲你做。

+0

確實,這裏有空間讓我感到困惑,但是我認爲OP的使用MySQL – Strawberry

+0

這個也是正確的,因爲'SQL Server'使用'TOP',但不幸的是'MySQL'正在使用' LIMIT'。 –

+0

只是看到我不知何故錯過了'MySQL'標籤。這種方式當然是「限制」,是正確的答案。 – Dcortez