COUNT 函数
COUNT 函数对由表达式定义的行计数。
COUNT 函数具有以下变体。
COUNT ( * ) 对目标表中的所有行计数,无论它们是否包含 null 值。
COUNT ( expression ) 计算某个特定列或表达式中带非 NULL 值的行的数量。
COUNT ( DISTINCT expression ) 计算某个列或表达式中非重复的非 NULL 值的数量。
APPROXIMATE COUNT DISTINCT 估算某个列或表达式中非重复的非 NULL 值的数量。
语法
COUNT( * | expression )
COUNT ( [ DISTINCT | ALL ] expression )
APPROXIMATE COUNT ( DISTINCT expression )
参数
- expression
-
对其执行函数的目标列或表达式。COUNT 函数支持所有参数数据类型。
- DISTINCT | ALL
-
利用参数 DISTINCT,该函数可在执行计数之前消除指定表达式中的所有重复值。利用参数 ALL,该函数可保留表达式中的所有重复值以进行计数。ALL 是默认值。
- APPROXIMATE
-
与 APPROXIMATE 结合使用时,COUNT DISTINCT 函数使用 HyperLogLog 算法来估算某个列或表达式中非重复的非 NULL 值的数量。使用 APPROXIMATE 关键字的查询,运行速度会快得多,错误率相对较低,约为 2%。返回大量非重复值的查询可提供近似值,每个查询或组(如果有按子句划分的组)中有几百万或更多非重复值。对于较少数量(以千为单位)的非重复值,近似值计算可能慢于精确计数。APPROXIMATE 只能与 COUNT DISTINCT 结合使用。
返回类型
COUNT 函数返回 BIGINT。
示例
对来自佛罗里达州的所有用户计数:
select count(*) from users where state='FL';
count ------- 510
对 EVENT 表中的所有事件名称计数:
select count(eventname) from event;
count ------- 8798
对 EVENT 表中的所有事件名称计数:
select count(all eventname) from event;
count ------- 8798
对 EVENT 表中的所有唯一场地 ID 计数:
select count(distinct venueid) as venues from event;
venues -------- 204
计算每个卖家列出 4 张以上门票出售的批次的次数。按卖家 ID 对结果进行分组:
select count(*), sellerid from listing where numtickets > 4 group by sellerid order by 1 desc, 2;
count | sellerid ------+---------- 12 | 6386 11 | 17304 11 | 20123 11 | 25428 ...
以下示例比较 COUNT 和 APPROXIMATE COUNT 的返回值与执行时间。
select count(distinct pricepaid) from sales;
count ------- 4528 Time: 48.048 ms
select approximate count(distinct pricepaid) from sales;
count ------- 4553 Time: 21.728 ms