【问题标题】:Top n records per group sql in access访问中每组 sql 的前 n 条记录
【发布时间】:2017-05-04 09:25:27
【问题描述】:

我正在制作一些跟踪考试成绩的软件。有多个用户,其详细信息存储在用户表中。然后有一个进度表,它使用日期和得分的用户来跟踪分数。

我已经可以为所选用户 ID 选择最近的 3 条记录

SELECT TOP 3 Progress.LoginID, Progress.Score, Progress.[Date Taken]
FROM Progress
WHERE (((Progress.LoginID)=[Enter LoginID:]))
ORDER BY Progress.[Date Taken] DESC;

我可以显示所有按 LoginID 分组的记录

SELECT Progress.LoginID, Progress.Score, Progress.[Date Taken]
FROM Progress
GROUP BY Progress.LoginID, Progress.Score, Progress.[Date Taken];

我希望能够在一个查询中显示每个用户的 3 条最新记录,但我不确定如何使用嵌套查询/子查询来做到这一点。

用户表的字段名称为:

LoginID   
Forename    
Surname   
DOB   
Guardian Forename     
Guardian Surname      
Telephone Number  

进度表的字段名称是:

ProgressID    
LoginID   
Score     
Date Taken 

任何帮助将不胜感激。

【问题讨论】:

    标签: sql ms-access ms-access-2010 top-n


    【解决方案1】:

    一年前我也遇到过类似的问题:Top 3 per group including 0

    使用相同的方法,这将返回每个 LoginID 的最新三个日期 - 如果同一 LoginID 有绑定的日期,您可能会获得三个以上的记录。

    SELECT  PR1.LogInID, PR1.Score, PR1.[Date Taken]
    FROM    Progress AS PR1
    WHERE   PR1.[Date Taken] IN (
                            SELECT TOP 3 PR2.[Date Taken]
                            FROM    Progress PR2
                            WHERE   PR2.LoginID = PR1.LoginID
                            ORDER BY PR2.[Date Taken] DESC
                            )
    ORDER BY    LoginID, [Date Taken]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 2018-12-12
      相关资源
      最近更新 更多