2012-05-03 48 views
2

我知道這應該很簡單,但今天不是我的一天。每個用戶積分的總和大於某個值,並且訂購了

我有這樣

user  | points  
---------|------------ 
Smith | 100 
Neo  | 200 
Morpheus | 300 
Smith | 100 
Neo  | 200 
Morpheus | 300 

和我在尋找會產生這種

user  | points  
---------|------------ 
Morpheus | 600 
Neo  | 400 

因此,選擇一個表,我想打印出誰擁有超過300個用戶積分總數,我想按照從最高到最低的總和排序出來。

我使用:

$ mysql -V 
mysql Ver 14.14 Distrib 5.1.61, for redhat-linux-gnu (x86_64) using readline 5.1 

我一直在努力的SQL是這樣的:

SELECT user, SUM(points) AS sum FROM users GROUP BY user HAVING SUM(points)>300 

,這給我的一切正確的輸出,但它不給我整理輸出。我嘗試插入ORDER BY,但沒有運氣。

+1

它適用於[sqlfiddle(http://sqlfiddle.com/#!2/ad67d/2)。 'ORDER BY'有什麼問題?當你添加該子句時,你會得到什麼結果? – eggyal

+0

正如我所說,糟糕的一天,我可以發誓我嘗試了這種方式@juergen回答,但似乎我沒有 - 他的答案將在接受通行證的最短時間後標記爲正確的。 – Nikola

回答

4
SELECT user, SUM(points) AS sum 
FROM users 
GROUP BY user 
HAVING sum > 300 
order by sum desc 
+0

這是真的嗎? 「具有總和(點)> 300」是標準的SQL語法。我會認爲MySQL會支持這一點。 –

+0

Mysql支持:'總和(點)> 300'和'總和> 300' –

0

應該只是

SELECT user, SUM(points) AS sum FROM users GROUP BY user HAVING SUM(points)>300 
ORDER BY SUM(points) DESC 

除非我失去了一些東西

相關問題