SUM ウィンドウ関数 - AWS Clean Rooms

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

SUM ウィンドウ関数

SUM ウィンドウ関数は、入力列または式の値の合計を返します。SUM 関数は数値に対してはたらき、NULL 値は無視します。

構文

SUM ( [ ALL ] expression ) OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list frame_clause ] )

引数

expression

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

ALL

引数 ではALL、関数は式から重複する値をすべて保持します。 ALLがデフォルトです。 DISTINCTはサポートされていません。

OVER

集計関数に使用するウィンドウ句を指定します。OVER 句は、ウィンドウ集約関数を通常の集合集約関数と区別します。

PARTITION BY expr_list

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

ORDER order_list による

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

frame_clause

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

データ型

SUM 関数でサポートされている引数タイプは、SMALLINT、、INTEGER、BIGINT、NUMERIC、DECIMALREAL、および DOUBLE ですPRECISION。

SUM 関数でサポートされる戻り値の型は次のとおりです。

  • BIGINT SMALLINTまたは INTEGER引数の

  • NUMERIC BIGINT引数の

  • DOUBLE PRECISION 浮動小数点引数の

次の例では、日付および販売 ID によって順序付けされた販売数量の累積 (中間) 合計を作成します。

select salesid, dateid, sellerid, qty, sum(qty) over (order by dateid, salesid rows unbounded preceding) as sum from winsales order by 2,1; salesid | dateid | sellerid | qty | sum ---------+------------+----------+-----+----- 30001 | 2003-08-02 | 3 | 10 | 10 10001 | 2003-12-24 | 1 | 10 | 20 10005 | 2003-12-24 | 1 | 30 | 50 40001 | 2004-01-09 | 4 | 40 | 90 10006 | 2004-01-18 | 1 | 10 | 100 20001 | 2004-02-12 | 2 | 20 | 120 40005 | 2004-02-12 | 4 | 10 | 130 20002 | 2004-02-16 | 2 | 20 | 150 30003 | 2004-04-18 | 3 | 15 | 165 30004 | 2004-04-18 | 3 | 20 | 185 30007 | 2004-09-07 | 3 | 30 | 215 (11 rows)

WINSALES テーブルの説明については、「ウィンドウ関数例のサンプルテーブル」を参照してください。

次の例では、日付による販売数量の累積 (中間) 合計を作成し、結果を販売者 ID でパーティション分割して、パーティション内の日付と販売 ID によって結果を順序付けします。

select salesid, dateid, sellerid, qty, sum(qty) over (partition by sellerid order by dateid, salesid rows unbounded preceding) as sum from winsales order by 2,1; salesid | dateid | sellerid | qty | sum ---------+------------+----------+-----+----- 30001 | 2003-08-02 | 3 | 10 | 10 10001 | 2003-12-24 | 1 | 10 | 10 10005 | 2003-12-24 | 1 | 30 | 40 40001 | 2004-01-09 | 4 | 40 | 40 10006 | 2004-01-18 | 1 | 10 | 50 20001 | 2004-02-12 | 2 | 20 | 20 40005 | 2004-02-12 | 4 | 10 | 50 20002 | 2004-02-16 | 2 | 20 | 40 30003 | 2004-04-18 | 3 | 15 | 25 30004 | 2004-04-18 | 3 | 20 | 45 30007 | 2004-09-07 | 3 | 30 | 75 (11 rows)

次の例では、結果セットのすべての行を、 列SELLERIDと SALESID列の順に順番に番号付けします。

select salesid, sellerid, qty, sum(1) over (order by sellerid, salesid rows unbounded preceding) as rownum from winsales order by 2,1; salesid | sellerid | qty | rownum --------+----------+------+-------- 10001 | 1 | 10 | 1 10005 | 1 | 30 | 2 10006 | 1 | 10 | 3 20001 | 2 | 20 | 4 20002 | 2 | 20 | 5 30001 | 3 | 10 | 6 30003 | 3 | 15 | 7 30004 | 3 | 20 | 8 30007 | 3 | 30 | 9 40001 | 4 | 40 | 10 40005 | 4 | 10 | 11 (11 rows)

WINSALES テーブルの説明については、「ウィンドウ関数例のサンプルテーブル」を参照してください。

次の例では、結果セット内のすべての行を順番に番号付けし、結果を でパーティション化しSELLERID、結果をパーティションSALESID内SELLERIDおよびパーティション内で順序付けします。

select salesid, sellerid, qty, sum(1) over (partition by sellerid order by sellerid, salesid rows unbounded preceding) as rownum from winsales order by 2,1; salesid | sellerid | qty | rownum ---------+----------+-----+-------- 10001 | 1 | 10 | 1 10005 | 1 | 30 | 2 10006 | 1 | 10 | 3 20001 | 2 | 20 | 1 20002 | 2 | 20 | 2 30001 | 3 | 10 | 1 30003 | 3 | 15 | 2 30004 | 3 | 20 | 3 30007 | 3 | 30 | 4 40001 | 4 | 40 | 1 40005 | 4 | 10 | 2 (11 rows)