適用対象: Databricks SQL
Databricks Runtime 16.4 以降
グループ内の連結された STRING
値と BINARY
値を返します。
この関数は listagg 関数のエイリアスです。
構文
string_agg ( [ALL | DISTINCT] expr [, delimiter] )
[ WITHIN GROUP (ORDER BY { sortKey [ sort_direction ] [ nulls_sort_oder ] } [, ...] ) ]
[ FILTER ( WHERE cond ) ]
sort_direction
[ ASC | DESC ]
nulls_sort_order
[ NULLS FIRST | NULLS LAST ]
この関数は、句と OVER
句を省略した場合に、WITHIN GROUP
句を使用してFILTER
として呼び出すこともできます。
論争
expr
STRING
またはBINARY
に評価される式。NULL
値は無視されます。delimiter
連結された値を区切るために使用
expr
の型に一致する定数式。 既定値は、''
の場合は空の文字列 (STRING
) で、''::BINARY
の場合は長さ 0 のバイナリ (BINARY
) です。ORDER BY
連結の前に値を並べ替えるために使用される式。 既定値は、グループ内の行の順序です。
sortKey
順序が定義されている式。
sortKey
内の列参照もexpr
に存在する必要があります。sort_direction
order by 式の並べ替え順序を指定します。
-
ASC
: この式の並べ替え方向は昇順です。 -
DESC
: この式の並べ替え方向は降順です。
並べ替えの方向が明示的に指定されていない場合、既定では行が昇順に並べ替えられます。
-
nullの並び順
Null 値を非 Null 値の前に返すか後に返すかを指定します (省略可能)。
null_sort_order
が指定されていない場合、並べ替え順序がASC
の場合は最初に NULL が並べ替えられ、並べ替え順序がDESC
の場合は最後に NULL が並べ替えられます。-
NULLS FIRST
:NULL
値は、並べ替え順序に関係なく、最初に返されます。 -
NULLS LAST
:NULL
値は、並べ替え順序に関係なく最後に返されます。
-
cond
: 集計に使用される行をフィルター処理するBOOLEAN
式 (省略可能)。
返品ポリシー
STRING
が expr
の場合は STRING
、そうでない場合は BINARY
です。
DISTINCT
が指定されている場合は、一意の値のみが集計され、sortKey
はexpr
と一致する必要があります。
例示
-- Simple example with default delimiter
> SELECT string_agg(col) FROM VALUES ('a'), ('b'), ('c') AS tab(col);
acb
-- Simple example with explicit delimiter
> SELECT string_agg(col, ', ') FROM VALUES ('a'), ('b'), ('c') AS tab(col);
b, a, c
-- Example with nulls
> SELECT string_agg(col) FROM VALUES ('a'), (NULL), ('c') AS tab(col);
ac
-- Example with explicit order
> SELECT string_agg(col) WITHIN GROUP (ORDER BY col DESC)
FROM VALUES ('a'), ('b'), ('c') AS tab(col);
cba
-- Example with DISTINCT
> SELECT string_agg(DISTINCT col)
FROM VALUES ('a'), ('a'), ('b') AS tab(col);
ab
-- Example of FUNCTION_AND_ORDER_EXPRESSION_MISMATCH
> SELECT string_agg(DISTINCT col) WITHIN GROUP (ORDER BY id DESC)
FROM VALUES (1, 'a'), (2, 'b'), (3, 'c') AS tab(id, col);
Error: [INVALID_WITHIN_GROUP_EXPRESSION.MISMATCH_WITH_DISTINCT_INPUT
-- Example with `BINARY`
> SELECT hex(string_agg(col::binary, x'00'))
FROM VALUES (1, 'a'), (2, 'b'), (3, 'c') AS tab(id, col);
6100630062