【问题标题】:MS Access: Finding the top of each group in an SQL queryMS Access:在 SQL 查询中查找每个组的顶部
【发布时间】:2014-01-22 17:38:18
【问题描述】:

在我的表格中,我有四列。

我有一个球员姓名、一个 ID、一个年龄和一个分数。

ID | Player Name | Age | Score
------------------------------
0  | James       | 24  | 20
1  | Carly       | 24  | 25
2  | Matt        | 24  | 19
3  | Jess        | 26  | 35
4  | Jimmy       | 26  | 32
5  | Tom         | 27  | 19
6  | Brian       | 27  | 25

我需要写一个查询来找到每个年龄段的顶级球员,但我很难过。我已经尝试对两者进行排序并使用 Max() 函数,并且我尝试手动循环遍历这些值以找到顶部,但无济于事。

这是我期望的结果:

ID | Player Name | Age | Score
------------------------------
1  | Carly       | 24  | 25
3  | Jess        | 26  | 35
6  | Brian       | 27  | 25

我很困惑,我确信有一种简单的方法可以实现这一点。谢谢。

【问题讨论】:

标签: sql ms-access ms-access-2007


【解决方案1】:

解决这个问题的一种方法是创建每个年龄的最高分数的内联视图,然后加入它

SELECT p.* 
FROM   players p 
       INNER JOIN (SELECT age, 
                          Max(score) as mScore 
                   FROM   players 
                   GROUP  BY age) AS mp 
               ON p.age = mp.age 
                  AND p.score = mp.mscore 

您应该注意,如果每个年龄最多出现一条以上的记录

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 2020-04-06
    相关资源
    最近更新 更多