【发布时间】:2020-12-06 14:22:59
【问题描述】:
我正在编写一个特定的 sql 查询,该查询需要根据分组表返回特定条目的位置。
背景信息:我正在使用 Java 和 MS Access 编写高尔夫俱乐部数据管理系统。在这个系统中,用户能够将他们的分数作为新条目存储到this table。使用这张表,我设法提取了前 3 名高尔夫球手的排名,使用了他们所有记录的分数(我只使用前 3 名来保留屏幕空间)。
Select TOP 3 Username, Sum(Points)
FROM Scores
GROUP By Username
ORDER BY Sum(Points) desc
这会产生所需的结果。但是,如果当前用户不在前 3 名之外,我希望能够告诉用户他们当前在所有玩家的完整排名中的位置。因此,我尝试编写一个查询来计算总分低于当前用户的玩家数量。这是我的查询:
Select COUNT(*)
From Scores
GROUP BY Username
HAVING Sum(Points) < (Select Sum(Points)
FROM Scores
WHERE Username = 'Golfer210'
GROUP By Username)
这不会产生预期的数字 2,而是does this.
我尝试删除 GROUP BY 函数,但返回 null。 COUNT DISTINCT 函数也无法正常工作,并不断返回语法错误消息,无论我如何措辞。
问题:有没有办法在使用 GROUP BY 函数时计算条目数?如果没有,是否有一种更简单、更实用的方法可以从分组表中选择条目的位置?还是只能在从数据库中提取排名后用 Java 来完成?我无法在任何地方找到解决方案
【问题讨论】:
标签: sql ms-access group-by count ranking