array_agg
列内の値(NULL を含む)を配列に集約し(複数行を1行に)、特定の列で要素を並べ替えることができます。バージョン 3.0 から、array_agg() は ORDER BY を使用して要素を並べ替えることをサポートしています。
構文
ARRAY_AGG([distinct] col [order by col0 [desc | asc] [nulls first | nulls last] ...])
パラメータ
-
col: 集約したい列の値。サポートされているデータ型は BOOLEAN、TINYINT、SMALLINT、INT、BIGINT、LARGEINT、FLOAT、DOUBLE、VARCHAR、CHAR、DATETIME、DATE、ARRAY(v3.1以降)、MAP(v3.1以降)、STRUCT(v3.1以降)です。 -
col0:colの順序を決定する列。ORDER BY 列は複数指定することができます。 -
[desc | asc]:col0の昇順(デフォルト)または降順で要素を並べ替えるかを指定します。 -
[nulls first | nulls last]: NULL 値を最初または最後に配置するかを指定します。
戻り値
ARRAY 型の値を返し、col0 によってオプションで並べ替えられます。
使用上の注意
- 配列内の要素の順序はランダムであり、ORDER BY 列が指定されていない場合や、並べ替えられていない場合、列内の値の順序と異なる可能性があります。
- 返される配列内の要素のデータ型は、列内の値のデータ型と同じです。
- 入力が空でグループ化列がない場合、
NULLを返します。 - ARRAY_AGG_DISTINCT() は ARRAY_AGG(DISTINCT) のエイリアスです。