如何计算每个状态在SQL表

时间:2017-03-13 03:36:50

标签: sql group-by aggregate-functions

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

我猜我需要使用GROUP BYCOUNT,但我还没能把它放在一起。

2 个答案:

答案 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中的示例。

1 <子> https://www.techonthenet.com/sql/count.php