COUNT

说明

计算输入参数中元素的个数,一般用于计算查询结果中的行数,和SQL92标准规定的COUNT函数一致。

语法

count ::=

参数

ALL

对所值进行统计,不忽略重复值。ALL 是默认设置。

DISTINCT UNIQUE

只计算不同值的行数,重复的值当作一个计算。

expression

一个表达式,不允许使用聚集函数和子查询。

*

表示要计算应该计算所有行以返回表中行的总数。 COUNT(*) 不需要任何参数,而且不能与 DISTINCT 或 UNIQUE 一起使用。 COUNT(*) 不需要 expression 参数,因为根据定义,该函数不使用有关任何特定列的信息。 COUNT(*) 返回指定表中行的数而不消除重复。它对每行分别进行计数,包括含有空值的行。

返回值

计算出的行数。

注解

  • COUNT(*) 返回查询结果中的所有行数,包括 NULL 值和重复值。
  • COUNT(ALL expression) 对查询结果中的每一行都计算 expression 并返回非空值的数量。
  • COUNT(DISTINCT/UNIQUE expression) 对组中的每一行都计算 expression 并返回唯一非空值的数量。

示例

示例1: 统计记录总数

--  清理环境
DROP TABLE tab1 CASCADE;

--  创建表并插入数据
create table tab1(id INT, a INT, b INT);

INSERT INTO tab1 VALUES(1, 21, 55);
INSERT INTO tab1 VALUES(2, 21, 56);
INSERT INTO tab1 VALUES(3, 21, 48);
INSERT INTO tab1 VALUES(4, 22, 70);
INSERT INTO tab1 VALUES(5, 22, 65);
INSERT INTO tab1 VALUES(6, 11, 40);
INSERT INTO tab1 VALUES(7, 11, 43);
INSERT INTO tab1 VALUES(8, 31, 77);
INSERT INTO tab1 VALUES(9, 32, 80);


SELECT * FROM tab1 ORDER BY id;
ID(int)      |A(int)      |B(int)      |
-------------------------------------
1            |21          |55          |
-------------------------------------
2            |21          |56          |
-------------------------------------
3            |21          |48          |
-------------------------------------
4            |22          |70          |
-------------------------------------
5            |22          |65          |
-------------------------------------
6            |11          |40          |
-------------------------------------
7            |11          |43          |
-------------------------------------
8            |31          |77          |
-------------------------------------
9            |32          |80          |
总数目:9


--  统计记录总数
SELECT COUNT(*) FROM tab1;
COUNT(int)      |
----------------
9               |
总数目:1


--  去重统计
SELECT COUNT(DISTINCT a) FROM tab1;
COUNT(int)      |
----------------
5               |
总数目:1

--  删除表
DROP TABLE tab1;