

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# COUNT 窗口函数
<a name="r_WF_COUNT"></a>

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

COUNT 函数具有两个变体。COUNT(\$1) 对目标表中的所有行计数，无论它们是否包含 null 值。COUNT(expression) 计算某个特定列或表达式中带非 NULL 值的行的数量。

## 语法
<a name="r_WF_COUNT-synopsis"></a>

```
COUNT ( * | [ ALL ] expression) OVER
(
[ PARTITION BY expr_list ]
[ ORDER BY order_list 
                        frame_clause ]
)
```

## 参数
<a name="r_WF_COUNT-arguments"></a>

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

ALL   
利用参数 ALL，该函数可保留表达式中的所有重复值以进行计数。ALL 是默认值。DISTINCT 不受支持。

OVER   
指定聚合函数的窗口子句。OVER 子句将窗口聚合函数与普通集合聚合函数区分开来。

PARTITION BY *expr\$1list*   
依据一个或多个表达式定义 COUNT 函数的窗口。

ORDER BY *order\$1list*   
对每个分区中的行进行排序。如果未指定 PARTITION BY，则 ORDER BY 使用整个表。

 *frame\$1clause*   
如果 ORDER BY 子句用于聚合函数，则需要显式框架子句。框架子句优化函数窗口中的行集，包含或排除已排序结果中的行集。框架子句包括 ROWS 关键字和关联的说明符。请参阅 [窗口函数语法摘要](c_Window_functions.md#r_Window_function_synopsis)。

## 数据类型
<a name="c_Supported_data_types_wf_count"></a>

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

COUNT 函数支持的返回类型是 BIGINT。

## 示例
<a name="r_WF_COUNT-examples"></a>

 以下示例从数据窗口的开头显示销售 ID、数量和所有行的计数：

```
select salesid, qty,
count(*) over (order by salesid rows unbounded preceding) as count
from winsales
order by salesid;

salesid | qty | count
---------+-----+-----
10001 |  10 |   1
10005 |  30 |   2
10006 |  10 |   3
20001 |  20 |   4
20002 |  20 |   5
30001 |  10 |   6
30003 |  15 |   7
30004 |  20 |   8
30007 |  30 |   9
40001 |  40 |   10
40005 |  10 |   11
(11 rows)
```

有关 WINSALES 表的说明，请参阅[窗口函数示例的示例表](c_Window_functions.md#r_Window_function_example)。

以下示例从数据窗口的开头显示销售 ID、数量和非 null 行的计数。（在 WINSALES 表中，QTY\$1SHIPPED 列包含一些 NULL 值。） 

```
select salesid, qty, qty_shipped,
count(qty_shipped)
over (order by salesid rows unbounded preceding) as count
from winsales
order by salesid;

salesid | qty | qty_shipped | count
---------+-----+-------------+-------
10001 |  10 |          10 |   1
10005 |  30 |             |   1
10006 |  10 |             |   1
20001 |  20 |          20 |   2
20002 |  20 |          20 |   3
30001 |  10 |          10 |   4
30003 |  15 |             |   4
30004 |  20 |             |   4
30007 |  30 |             |   4
40001 |  40 |             |   4
40005 |  10 |          10 |   5
(11 rows)
```