다음을 통해 공유


string_agg 집계 함수

적용 대상:확인 표시 있음 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에 대한 것이며, 길이가 0인 이진 데이터(''::BINARY)는 BINARY에 대한 것입니다.

  • ORDER BY

    연결 전에 값을 정렬하는 데 사용되는 식입니다. 기본값은 그룹의 행 순서입니다.

    • sortKey

      순서가 정의되는 식입니다. 내 sortKey 열 참조도 에 있어야 expr합니다.

    • sort_direction

      정렬 표현을 위한 순서를 지정합니다.

      • 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가 지정된 경우, 고유 값만 집계되며 sortKeyexpr과 반드시 일치해야 합니다.

예시

-- 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