【发布时间】:2022-02-01 03:14:55
【问题描述】:
我有一个包含三列的 SQL 表:姓名、出生日期和当前状态。我想返回一个结果集,其中包含每个状态在原始表中出现的次数。结果集将有 2 列:state 和 count。
我猜我需要使用GROUP BY 或COUNT,但我无法将它们组合在一起。
【问题讨论】:
标签: sql group-by aggregate-functions
我有一个包含三列的 SQL 表:姓名、出生日期和当前状态。我想返回一个结果集,其中包含每个状态在原始表中出现的次数。结果集将有 2 列:state 和 count。
我猜我需要使用GROUP BY 或COUNT,但我无法将它们组合在一起。
【问题讨论】:
标签: sql group-by aggregate-functions
以下语法适用于大多数 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 语法!
你可以这样做......
SELECT current_state, count(current_state) FROM table GROUP BY current_state
【讨论】: