COUNT 函数 - Amazon Redshift

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