首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >COUNT(*)函数返回多个值

问COUNT(*)函数返回多个值
EN

Stack Overflow用户
提问于 2020-08-17 20:39:58
回答 1查看 22关注 0票数 0

我正在编写一个特定的sql查询,该查询需要根据分组的表返回特定条目的位置。

背景资料:我正在编写一个高尔夫俱乐部的数据管理系统使用Java和MS Access。在这个系统中,用户能够将他们的分数作为新条目存储到this table中。使用这个表,我已经设法提取了前3名高尔夫球手的排名,使用了他们所有记录的分数(我只使用前3名来保留屏幕空间)。

代码语言:javascript
复制
Select TOP 3 Username, Sum(Points) 
FROM Scores 
GROUP By Username 
ORDER BY Sum(Points) desc

这会产生所需的结果。但是,如果当前用户落在前3名之外,我希望能够告诉用户他们目前在所有玩家的完整排名中所处的位置。因此,我尝试编写一个查询来计算当前用户以下积分总和的玩家数量。下面是我的问题:

代码语言:javascript
复制
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中完成此操作?我在任何地方都找不到解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-17 20:43:59

您需要一个额外的聚合级别:

代码语言:javascript
复制
SELECT COUNT(*)
FROM (SELECT COUNT(*) 
      FROM Scores
      GROUP BY Username
      HAVING Sum(Points) < (SELECT Sum(Points)
                            FROM Scores
                            WHERE Username = 'Golfer210'
                           )
     ) as s;

注意:当存在关联时,您可能想要检查您的逻辑是否如您所期望的那样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63451014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档