

 Amazon Redshift は、パッチ 198 以降、新しい 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 関数には 2 つのバリエーションがあります。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>

 * 式*   
関数の対象となる列または式。

ALL   
引数 ALL を指定すると、この関数はカウントに使用する式から重複する値をすべて保持します。ALL がデフォルトです。DISTINCT はサポートされません。

OVER   
集計関数に使用するウィンドウ句を指定します。OVER 句は、ウィンドウ集計関数を標準セット集計関数と区別します。

PARTITION BY *expr\$1list*   
1 つ以上の式で 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)
```