Compartilhar via


Função de agregação string_agg

Aplica-se a:marcado como sim Databricks SQL marcado como sim Databricks Runtime 16.4 e versões posteriores

Retorna valores concatenados de STRING e BINARY dentro de um grupo.

Essa função é um alias para a função listagg.

Sintaxe

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 ]

Essa função também pode ser invocada como uma função de janela usando a cláusula OVER se as cláusulas WITHIN GROUP e FILTER forem omitidas.

Argumentos

  • expr

    Uma expressão avaliada como uma STRING ou um BINARY. NULL os valores são ignorados.

  • delimiter

    Uma expressão constante que corresponde ao tipo de expr usado para separar os valores concatenados. O padrão é uma cadeia de caracteres vazia ('') para STRING e um binário de comprimento zero (''::BINARY) para BINARY.

  • ORDER BY

    Uma expressão usada para ordenar os valores antes da concatenação. O padrão é a ordem das linhas no grupo.

    • sortKey

      Uma expressão na qual a ordem é definida. As referências de coluna dentro sortKey também devem estar presentes em expr.

    • sort_direction

      Especifica a ordem de classificação para a expressão ORDER BY.

      • ASC: a direção da classificação para essa expressão é crescente.
      • DESC: a ordem de classificação para essa expressão é decrescente.

      Se a direção de classificação não for especificada explicitamente, por padrão, as linhas serão classificadas em ordem crescente.

    • ordem_de_classificação_de_nulos

      Opcionalmente, especifica se valores NULL são retornados antes/depois de valores não NULL. Se null_sort_order não for especificado, os NULLs serão classificados primeiro se a ordem de classificação for ASC e classificados por último se a ordem de classificação for DESC.

      • NULLS FIRST: NULL os valores são retornados primeiro, independentemente da ordem de classificação.
      • NULLS LAST: NULL os valores são retornados por último, independentemente da ordem de classificação.
  • cond: uma expressão opcional BOOLEAN filtrando as linhas usadas para agregação.

Devoluções

Uma STRING se expr é uma STRING, caso contrário, BINARY.

Se DISTINCT for especificado, apenas valores exclusivos são agregados e a sortKey deve corresponder a expr.

Exemplos

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