【问题标题】:How to count number of times each state appears in SQL table如何计算每个状态在 SQL 表中出现的次数
【发布时间】:2022-02-01 03:14:55
【问题描述】:

我有一个包含三列的 SQL 表:姓名出生日期当前状态。我想返回一个结果集,其中包含每个状态在原始表中出现的次数。结果集将有 2 列:statecount

我猜我需要使用GROUP BYCOUNT,但我无法将它们组合在一起。

【问题讨论】:

标签: sql group-by aggregate-functions


【解决方案1】:

以下语法适用于大多数 SQL 引擎:

SELECT expression1, expression2, ... expression_n,
  COUNT(aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, ... expression_n
[ORDER BY expression [ ASC | DESC ]];

参数或参数

表达式 1, 表达式 2, ... 表达式_n
表达式 未封装在 COUNT 函数中且必须是 包含在 SQL 语句末尾的 GROUP BY 子句中。
aggregate_表达式
这是将计算非空值的列或表达式。
表格
您希望从中检索记录的表格。 FROM 子句中必须至少列出一个表。
WHERE 条件
可选。这些是选择记录必须满足的条件。
ORDER BY 表达式
可选。用于对结果集中的记录进行排序的表达式。如果有多个表达式 提供时,值应以逗号分隔。
ASC
可选。 ASC 按表达式升序对结果集进行排序。这是默认行为,如果没有修饰符 提供者。
DESC
可选。 DESC 按表达式降序对结果集进行排序。
1

请参阅所用特定引擎的文档:

...等

对于“问题

我有一个包含三列的 SQL 表:姓名、出生日期和当前状态。我想返回一个结果集,其中每个状态出现在原始表中的次数。结果集将有 2 列:状态和计数。

这样的查询可以这样构造:

SELECT current_state as state, count(*) as count
FROM data 
GROUP BY current_state

this SQLfiddle 中查看此示例。


1https://www.techonthenet.com/sql/count.php

【讨论】:

  • 今日提示:切换到现代、明确的JOIN 语法!
  • @jarlh 好主意 - 而不是引用 MySQL 文档(谁知道为什么该文档会有一个没有任何 ON JOIN 条件的示例??:/ .. .),它现在包含来自非数据库引擎特定来源的引用,并包含一些最常用的 r-DBMS 引擎的链接
【解决方案2】:

你可以这样做......

SELECT current_state, count(current_state) FROM table GROUP BY current_state

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    相关资源
    最近更新 更多