【问题标题】:SQL - Count(*) not behaving in expected manner [duplicate]SQL - Count(*)未按预期方式运行[重复]
【发布时间】:2015-08-20 23:41:24
【问题描述】:

我有以下代码

SELECT C_Record.BunchOfColumns, Count(*) AS Degrees 
FROM C_Record
WHERE (((C_Record.[C#])=[Enter Value])) //Parameter Input from User
GROUP BY C_Record.BunchofColumns;

My Degrees 列从不增加,无论查询返回多少行,它始终显示 1。我怀疑我没有正确实现我的GROUP BY 方法。如果我理解正确,所有被选中但不属于聚合函数的列(在我的例子中是COUNT)都应该放在GROUP BY 中。任何帮助深表感谢。提前致谢

编辑:我想要实现的是检查有多少行具有特定列的值,然后选择所有其他相关列并创建索引列。例如如果有三行满足我的要求

Col1 Col2 Degrees
 A     X    1
 B     Y    2
 C     Z    3

如果只有 2 行符合我的要求,那么

Col1 Col2 Degrees
 P     X    1
 Q     Y    2

P.S - 我的 C_Record.BunchofColumns 包含大约 10 列,为了简洁起见,我没有包括在内。

P.P.S - 如果我尝试跳过任何列,它会给我错误 You Tried to execute a query that does not include the specified expression <<column_name>> as part of an aggregate function

【问题讨论】:

  • Degrees 列只是 1、2、3、4 等,还是我缺少其他一些逻辑?
  • 如果是这样,那么you forgot the JOIN
  • 我明白了。我认为这正是我所需要的。谢谢凯文。如果您可以更新您的答案...我会将其标记为完成

标签: sql ms-access-2007


【解决方案1】:

当您使用 Count()GROUP BY 时,返回的计数是每个组中的行数。因此,要获得大于 1 的计数,您的表中必须有不止一行具有完全相同的值。如果您选择 10 个不同的列,那么您似乎在数据库中没有两列具有完全相同的 10 个相同的值。

如果您从按单列选择和分组开始,您会看到计数超过一。

【讨论】:

  • 这就是我最初所做的......但如果我不包括其他列,我会收到错误消息。也许有另一种方法可以做到这一点。
【解决方案2】:

这不是 GROUP BY 的工作原理。

GROUP BY 完全改变了查询的含义。结果的每一行都是原始行的“聚合分组”。每个聚合分组由所有行组成,它们的 GROUP BY 列具有特定的值组合。因此,如果您 GROUP BY 十列,则每个分组将由所有十列上相同的行组成。

一旦形成这些分组,您可以选择各种聚合值,例如 count()sum(),它们为您提供有关整个组的信息。 count(*) 为您提供组中的行数,而count(column) 为您提供column 为非NULL 的行数。您还可以选择出现在 GROUP BY 子句中的任何列,因为这些列在整个组中是相同的。

您得到一个count(*),因为您的每个组仅包含一行。这可能是因为您按十列分组,并且没有两行对于所有十列都是相同的。

如果您只想计算满足某个查询的行数,而您根本不想要这种聚合,您可以这样写:

SELECT count(*)
FROM something
WHERE something
-- no GROUP BY
;

这将形成整个查询的单个聚合组,并计算行数。

如果你想要别的东西,你需要进一步解释你想要做什么。

【讨论】:

  • 我明白你想说什么......这就是我最初所做的。但如果我不包括所有列,我会收到错误消息。在这一点上,我正在寻找一种不同的方法来做到这一点。我只是不能将其限制为 count(*)...我还需要选择其他列。否则我的报告将毫无意义
  • 您真正想要的结果是什么样的?我的意思是,你想在每一行都有相同的计数值吗?我只是不明白这一点。
  • @kevin..更新了问题
猜你喜欢
  • 1970-01-01
  • 2017-10-23
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
  • 2021-03-23
  • 2014-10-02
  • 2015-09-19
  • 2018-06-06
相关资源
最近更新 更多