2017-05-06 130 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