Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

COUNT 函数

COUNT 函数对由表达式定义的行计数。

COUNT 函数具有三个变体。COUNT ( * ) 对目标表中的所有行计数,无论它们是否包含 null 值。COUNT ( expression ) 计算某个特定列或表达式中带非 NULL 值的行的数量。COUNT ( DISTINCT expression ) 计算某个列或表达式中非重复的非 NULL 值的数量。

语法

Copy
[ APPROXIMATE ] COUNT ( [ DISTINCT | ALL ] * | expression )

参数

expression

对其执行函数的目标列或表达式。

DISTINCT | ALL

利用参数 DISTINCT,该函数可在执行计数之前消除指定表达式中的所有重复值。利用参数 ALL,该函数可保留表达式中的所有重复值以进行计数。ALL 是默认值。

APPROXIMATE

与 APPROXIMATE 结合使用时,COUNT ( DISTINCT expression ) 函数使用 HyperLogLog 算法来估算某个列或表达式中非重复的非 NULL 值的数量。使用 APPROXIMATE 关键字的查询的执行速度快得多,错误率相对较低,约为 2%。返回大量非重复值的查询可提供近似值,每个查询或组(如果有按子句划分的组)中有几百万或更多非重复值。对于较少数量(以千为单位)的非重复值,近似值计算可能慢于精确计数。APPROXIMATE 只能与 COUNT ( DISTINCT ) 结合使用。

数据类型

COUNT 函数支持所有参数数据类型。

COUNT 函数返回 BIGINT。

示例

对来自佛罗里达州的所有用户计数:

Copy
select count (*) from users where state='FL'; count ------- 510 (1 row)

对 EVENT 表中的所有唯一场地 ID 计数:

Copy
select count (distinct venueid) as venues from event; venues -------- 204 (1 row)

计算每个卖家列出 4 张以上门票出售的批次的次数。按卖家 ID 对结果进行分组:

Copy
select count(*), sellerid from listing group by sellerid having min(numtickets)>4 order by 1 desc, 2; count | sellerid -------+---------- 12 | 17304 11 | 25428 11 | 48950 11 | 49585 ... (16840 rows)

以下示例比较 COUNT 和 APPROXIMATE COUNT 的返回值与执行时间。

Copy
select count(distinct pricepaid) from sales; count ------- 4528 (1 row) Time: 48.048 ms select approximate count(distinct pricepaid) from sales; count ------- 4541 (1 row) Time: 21.728 ms

本页内容: