COUNT ウィンドウ関数 - Amazon Redshift

COUNT ウィンドウ関数

COUNT ウィンドウ関数は式で定義された行をカウントします。

COUNT 関数には 2 つのバリエーションがあります。COUNT(*) は null を含むかどうかにかかわらず、ターゲットテーブルのすべての行をカウントします。COUNT(expression) は、特定の列または式にある NULL 以外の値を持つ行数を計算します。

構文

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

引数

expression

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

ALL

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

OVER

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

PARTITION BY expr_list

1 つ以上の式で COUNT 関数のウィンドウを定義します。

ORDER BY order_list

各パーティション内の行をソートします。PARTITION BY が指定されていない場合、ORDER BY はテーブル全体を使用します。

frame_clause

ORDER BY 句が集計関数に使用される場合、明示的なフレーム句が必要です。フレーム句は順序付けた結果内の行のセットを含めるか除外して、関数のウィンドウの行のセットを絞り込みます。フレーム句は ROWS キーワードおよび関連する指定子で構成されます。「ウィンドウ関数の構文の概要」を参照してください。

データ型

COUNT 関数は引数のデータ型をすべてサポートします。

COUNT 関数でサポートされる戻り値の型は BIGINT です。

次の例では、データウィンドウの先頭から販売 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 テーブルの説明については、「ウィンドウ関数例のサンプルテーブル」を参照してください。

次の例では、データウィンドウの先頭から販売 ID、数量、非 Null 行をカウントする方法を示します。(WINSALES テーブルの QTY_SHIPPED 列には 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)