COUNT(*) 函数返回多个值
COUNT(*) function is returning multiple values
我正在编写一个特定的 sql 查询,它需要 return 特定条目的位置,基于分组 table。
背景信息:我正在使用 Java 和 MS Access 编写高尔夫俱乐部数据管理系统。在这个系统中,用户能够将他们的分数存储为 this table 中的新条目。使用这个 table,我成功地提取了前 3 名高尔夫球手的排名,使用他们所有记录的分数(我只使用前 3 名来保留屏幕 space)。
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 函数,但 return 为空。 COUNT DISTINCT 函数也无法正常工作,并且不断 return 出现语法错误消息,无论我怎么说。
问题:有没有办法在使用 GROUP BY 函数时计算条目数?如果不是,是否有更简单、更实用的方法来 select 分组 table 中条目的位置?或者这只能在从数据库中提取排名后在 Java 中完成?我一直无法在任何地方找到解决方案
您需要一个额外的聚合级别:
SELECT COUNT(*)
FROM (SELECT COUNT(*)
FROM Scores
GROUP BY Username
HAVING Sum(Points) < (SELECT Sum(Points)
FROM Scores
WHERE Username = 'Golfer210'
)
) as s;
注意:您可能想检查您的逻辑是否符合您的预期。
我正在编写一个特定的 sql 查询,它需要 return 特定条目的位置,基于分组 table。
背景信息:我正在使用 Java 和 MS Access 编写高尔夫俱乐部数据管理系统。在这个系统中,用户能够将他们的分数存储为 this table 中的新条目。使用这个 table,我成功地提取了前 3 名高尔夫球手的排名,使用他们所有记录的分数(我只使用前 3 名来保留屏幕 space)。
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 函数,但 return 为空。 COUNT DISTINCT 函数也无法正常工作,并且不断 return 出现语法错误消息,无论我怎么说。
问题:有没有办法在使用 GROUP BY 函数时计算条目数?如果不是,是否有更简单、更实用的方法来 select 分组 table 中条目的位置?或者这只能在从数据库中提取排名后在 Java 中完成?我一直无法在任何地方找到解决方案
您需要一个额外的聚合级别:
SELECT COUNT(*)
FROM (SELECT COUNT(*)
FROM Scores
GROUP BY Username
HAVING Sum(Points) < (SELECT Sum(Points)
FROM Scores
WHERE Username = 'Golfer210'
)
) as s;
注意:您可能想检查您的逻辑是否符合您的预期。