2017-05-06 148 views
1

超級新SQLite的,但我認爲它不能傷害要求。選擇多個最大值?在Sqlite中?

我有事如下表(不允許尚未發表圖片)就像拉從多個表中的數據來計算TotalScore:

Name  TotalScore 
Course1  15 
Course1  12 
Course2  9 
Course2  10 

如何赫克只選擇每個課程的最大價值?我管理使用

ORDER BY TotalScore LIMIT 2 

但我最終可能會在我的最終產品多個課程,所以LIMIT 2等不會真的幫助我。

想法?如果有幫助,很高興能夠提出我的其餘查詢?

+1

不允許發佈圖片以防止您使用圖片[不適用時](https://meta.stackexchange.com/q/96125)。 –

回答

5

您可以通過NameGROUP結果集,然後使用聚合函數MAX()

SELECT Name, max(TotalScore) 
FROM my_table 
GROUP BY Name 

,你會得到一個排爲每個不同的課程,名稱中的第1列,最大TotalScore這一課程第2列

進一步提示

您只能SELECT列是AR È或者通過(Name)分組或包裹在聚合函數(max(TotalScore))。如果你需要在結果的另一列(如Description),您可以將通過多個列:

... 
GROUP BY Name, Description 

要進一步篩選結果行,你需要使用HAVING,而不是WHERE

SELECT Name, max(TotalScore) 
FROM my_table 
-- WHERE clause would be here 
GROUP BY Name 
HAVING max(TotalScore) > 5 

WHERE濾波的原始表中的行,HAVING過濾所得分組的行。

+0

這正是我所追求的!工作就像一種享受 - 雖然我覺得有點不知道它是如此簡單! – Bunsunburner

+0

別擔心,你活着學習;) – Pharaoh

1

maxsum功能是「聚合函數」,意思是它們聚集多行在一起。通常情況下,他們聚集他們到一個值,像max(totalscore)但你可以聚集他們到多個值與group bygroup by說怎麼行組一起到聚集。

select name, max(totalscore) 
from scores 
group by name; 

這組中的所有列具有相同的名稱在一起,然後做每個名字max(totalscore)

sqlite> select name, max(totalscore) from scores group by name; 
Course1|15 
Course2|12