[英]Top n records per group sql in access
我正在制作一些跟踪测试分数的软件。 有多个用户,其详细信息存储在用户表中。 然后有一个进度表,它跟踪带有日期和得分的用户的分数。
我已经可以为所选用户 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
任何帮助,将不胜感激。
一年前我遇到了类似的问题: 每组前 3 名,包括 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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.