count 聚合函数

适用于:check marked yes Databricks SQL check marked yes Databricks Runtime

返回组中检索过的行的数目。

语法

count ( [DISTINCT | ALL] * ) [FILTER ( WHERE cond ) ]
count ( [DISTINCT | ALL] expr [, ...] ) [FILTER ( WHERE cond ) ]

还可以使用 OVER 子句将此函数作为窗口函数调用。

自变量

  • *:对组中的所有行进行计数。
  • expr:对所有 exprN 均不为 NULL 的行进行计数。
  • cond:可选的布尔表达式,可筛选用于聚合的行。

返回

一个 BIGINT

如果指定了 DISTINCT,则函数返回不包含 NULL 的唯一值的数量。

如果指定了 ALL,则该函数返回所有值的数量。 对于 *,这包括那些包含 NULL 的值。

示例

> SELECT count(*) FROM VALUES (NULL), (5), (5), (20) AS tab(col);
 4

> SELECT count(1) FROM VALUES (NULL), (5), (5), (20) AS tab(col);
 4

> SELECT count(col) FROM VALUES (NULL), (5), (5), (20) AS tab(col);
 3

> SELECT count(col) FILTER(WHERE col < 10)
    FROM VALUES (NULL), (5), (5), (20) AS tab(col);
 2

> SELECT count(DISTINCT col) FROM VALUES (NULL), (5), (5), (10) AS tab(col);
 2

> SELECT count(col1, col2)
    FROM VALUES (NULL, NULL), (5, NULL), (5, 1), (5, 2), (5, 2), (NULL, 2), (20, 2) AS tab(col1, col2);
 4

> SELECT count(DISTINCT col1, col2)
    FROM VALUES (NULL, NULL), (5, NULL), (5, 1), (5, 2), (NULL, 2), (20, 2) AS tab(col1, col2);
 3