我有一个包含三列的SQL表: name ,出生日期和当前状态。我想返回一个结果集,其中包含每个状态出现在原始表中的次数。结果集将包含2列: state 和 count 。
我猜我需要使用GROUP BY
或COUNT
,但我还没能把它放在一起。
答案 0 :(得分:1)
你可以这样做......
SELECT current_state, count(current_state) FROM table GROUP BY current_state
答案 1 :(得分: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 ]];
参数或参数
expression1,expression2,... expression_n
表达式未封装在COUNT函数中,必须包含在SQL语句末尾的GROUP BY子句中。
的 aggregate_expression 强>
这是将计算其非空值的列或表达式 的 表 强>
您希望从中检索记录的表。 FROM子句中必须至少列出一个表 WHERE条件
可选的。这些是要选择的记录必须满足的条件 ORDER BY表达式
可选的。用于对结果集中的记录进行排序的表达式。如果提供了多个表达式,则值应以逗号分隔 的 ASC 强>
可选的。 ASC按表达式按升序对结果集进行排序。如果没有修饰符是提供者,则这是默认行为 的 DESC 强>
可选的。 DESC按表达式按降序对结果集进行排序 子> 1
请参阅所用特定发动机的文档:
对于“问题”
我有一个包含三列的SQL表:名称,出生日期和当前状态。我想返回一个结果集,其中包含每个状态出现在原始表中的次数。结果集将包含2列:state和count。
这样的查询可以这样构造:
SELECT current_state as state, count(*) as count
FROM data
GROUP BY current_state
请参阅this SQLfiddle中的示例。