Access SQL Query Top 1 of Group

问题描述

我正在尝试编写一个查询来选择每组数据中的顶部记录。

例如下面

部门 团队 积分
1 利物浦 90
1 曼彻斯特 88
2 利兹 94
2 阿森纳 77
3 博尔顿 66
3 马刺队 72
3 德比 33

我希望我的查询返回每个部门得分最高的球队:

部门 团队 积分
1 利物浦 90
2 利兹 94
3 马刺队 72

我认为这应该很容易。

有什么想法吗?

谢谢

解决方法

在 MS Access 中,您可以使用:

select t.*
from t
where t.points = (select max(t2.points)
                  from t t2
                  where t2.division = t.division
                 );

如果有平局,则返回所有匹配的球队。如果即使有平局,您也只想要一支球队:

select t.*
from t
where t.team = (select t2.team
                from t t2
                where t2.division = t.division
                order by t2.points desc,t2.team
               );