7.23.15 ARRAY_AGG
対象データに指定した値式の結果(値式によって集計された値)を,先頭から順に配列要素とする配列データを返します。
- メモ
-
「7.23.15 ARRAY_AGG」の説明では,ARRAY_AGG集合関数をARRAY_AGGと表記します。
- 〈この項の構成〉
(1) 指定形式
ARRAY_AGG集合関数::=ARRAY_AGG(対象データ 〔ORDER BY ソート指定リスト〕) 対象データ::=値式
(2) 指定形式の説明
- 対象データ:
-
対象データには,集計対象となる値式を指定します。
指定規則を次に示します。
-
値式には,配列データを指定できません。
-
値式には,?パラメタを単独で指定できません。
-
- ORDER BY ソート指定リスト:
-
ソート指定リストには,集計対象の値のソート順を指定します。この指定によって,配列要素の値の順序を昇順または降順に並べることができます。
この指定を省略した場合,同じSQL文を実行しても,ARRAY_AGGの実行結果の値の順序が変わることがあります(配列要素の値の順序が変わることがあります)。
ソート指定リストについては,「7.25 ソート指定リスト」を参照してください。
指定規則を次に示します。
-
ARRAY_AGGのソート指定リストには,ナル値ソート順指定は指定できません。
-
ARRAY_AGGのソート指定リストには,ソート指定を2つ以上指定できません。
-
(3) 規則
-
ARRAY_AGGの実行結果のデータ型は,配列型になります。要素データ型は,対象データに指定した値式のデータ型と同じになります。また,最大要素数は30,000になります。
-
問合せ指定中にARRAY_AGGを256個まで指定できます。
-
ソート指定リストを省略した場合,対象データに指定した値式から導出された集計対象の値が,ARRAY_AGGの入力行になります。入力行になる値の並び順は保証されません。
-
ソート指定リストを指定した場合,対象データに指定した値式から導出された集計対象の値に対して,ソート指定に従ってソート処理を行った結果が,ARRAY_AGGの入力行になります。
なお,集計対象の値にナル値がある場合,ソート指定リストの順序付け指定によってナル値の扱いが次のように異なります。
-
順序付け指定にASCを指定した場合,または順序付け指定を省略した場合
ナル値を末尾に並べ替えます。
-
順序付け指定にDESCを指定した場合
ナル値を先頭に並べ替えます。
-
-
ARRAY_AGGの入力行を求める際,集計対象に含まれるナル値は排除されません。
-
ARRAY_AGGの入力行数が0の場合,ARRAY_AGGの実行結果はナル値になります。
-
ARRAY_AGGの実行結果は,入力行に含まれる値を先頭から順に配列要素とする配列データになります。
-
ARRAY_AGGの入力行数が30,000を超えると,SQL文がエラーになります。
(4) 例題
次に示す売上表(SALES)を検索対象とするSQL文の実行例を説明します。
- 例題
-
売上表(SALES)を検索して,商品ID(PID)を配列要素とする配列データを求めます。求める配列データの条件を次に示します。
-
配列要素の値を単価(PRICE)の昇順に並べる。
-
顧客ID(CID)ごとに配列データを求める。
SELECT "CID",ARRAY_AGG("PID" ORDER BY "PRICE") AS "PID_LIST" FROM "SALES" GROUP BY "CID"
実行結果の例
-