当前位置: 首页 > 面试题库 >

count(*)SQL语句中是否需要“按组”?

田马鲁
2023-03-14
问题内容

以下语句在我的数据库中有效:

select column_a, count(*) from my_schema.my_table group by 1;

但这不是:

select column_a, count(*) from my_schema.my_table;

我得到了错误:

错误:“ my_table.column_a”列必须出现在GROUP BY子句中或在聚合函数中使用

有用的注释:该线程:SQL子句“ GROUP BY1”是什么意思? 讨论“ group by 1”的含义。

更新:

我感到困惑的原因是因为我经常看到count(*)如下情况:

select count(*) from my_schema.my_table

那里是 没有 group by说法。是否COUNT总是需要跟着 group bygroup by在这种情况下,该语句是否隐含?


问题答案:

这个错误是很合理的。COUNT是“聚合”函数。因此,您需要告诉它要汇总的字段,这是通过GROUP BY子句完成的。

在您的情况下,最有意义的选择可能是:

SELECT column_a, COUNT(*) FROM my_schema.my_table GROUP BY column_a;

如果 使用该COUNT(*)子句,则要求返回完整的行数,而不是按其他条件进行汇总。GROUP BY在这种情况下,您对if的询问是否是隐式的,可以用以下方式回答:“ sort of”:如果您未指定任何内容,则有点像询问:“ group by
none”,这意味着您将获得一个巨大的总计,即整个桌子。

例如,执行:

SELECT COUNT(*) FROM table;

将显示该表中的行数,而:

SELECT col_a, COUNT(*) FROM table GROUP BY col_a;

将为您显示 每个 值的行 col_a。就像是:

    col_a  | COUNT(*)
  ---------+----------------
    value1 | 100
    value2 | 10
    value3 | 123

您还应该考虑到*计算 一切
的手段。包括NULLs!如果要计算特定条件,则应使用COUNT(expression)!有关此主题的更多详细信息,请参阅有关Aggragate函数的文档。



 类似资料:
  • 问题内容: 我只是在浏览一个论坛,有人问他们在网上找到的PHP文件。在代码中有几个这样的地方: 我一直认为,如果条件为真,则需要用括号括起来。还有其他选择吗,例如您是否不在同一行? 还有另一行是这样的: 我的本能是说这行不通,但是我也不知道它是否是过时的PHP文件并且它曾经可以工作? 问题答案: 您可以执行以下其他语句: 然后您还可以编写if-else的替代语法: 使用备用语法,您也可以退出解析模

  • 问题内容: 我有一张桌子,我需要按以下方式显示输出。 rsp_ind = 0(表示“新”)和1(表示“ Accepted”(已接受))的行数 输出应为 我尝试使用以下查询。 和即时通讯输出为 有人可以帮助我调整查询以实现输出。注意:我不能为此加上一笔款项。它是更大程序的一部分,因此我无法为此添加超级查询。 问题答案: 您可以在此处查看此请求的输出

  • 问题内容: 我有这两个SQL语句,我需要做的是将它们连接到一个语句中,但是当我这样做时,结果是不合适的。:/ 这就是我加入他们的方式: 这样,“ wynajecia”和“ wizyty”中的数字相同,这是错误的。:/ 编辑: 有了这段代码,我得到: 正确的输出应为: 我设法通过以下代码获得正确的答案: 但是我不是,这是解决问题的正确方法。 问题答案: 考虑以下场景: TableA记录的ID:{1、

  • 问题内容: 我目前正在将SQL Server SQL语句转换为它们的ANSI泛型等效项,并且使用WITH语句来限制递归语句。 为了专注于此问题,我将简化如下的问题 如果我有两张桌子 报告单位 col1:密钥 col2:ParentReportingUnitKey 设施 col1:密钥 col2:ParentReportingUnitKey 此结构描述了直至设施的报告单位的层次结构,其中报告单位可以

  • 问题内容: 如果我忘记了,有时反正还是可行。但有时并非如此。 在JDBC和Android SQLite中,似乎根本不需要。我很迷惑。 我什么时候应该使用分号? 问题答案: 分号表示一条语句的结尾,因此,如果有多个语句,则应使用分号,否则它将正常工作。 我通常使用分号作为练习,即使您在sql客户端上运行查询,例如在Sql Developer中使用分号,如果在工作表上有多个语句,它也很有用,因为您可以

  • 问题内容: 我曾经听说在JavaScript中将花括号放在单行语句中可能有害。我不记得这个推理了,谷歌搜索并没有太大帮助。 是否有什么使将JavaScript中的所有语句括在大括号中的好主意呢? 我问,因为每个人似乎都这样做。 问题答案: 没有 但是推荐。如果您要扩展该语句,则将需要它们。 这是完全有效的 但是,强烈建议您始终使用花括号,因为如果您(或其他人)曾经扩展过该语句,则将需要使用该花括号