Partilhar via


string_agg função de agregação

Aplica-se a:check marked yes Databricks SQL check marked yes Databricks Runtime 16.4 e posterior

Retorna valores concatenados STRING e BINARY dentro de um grupo.

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

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

Argumentos

  • expr

    Uma expressão que é avaliada como a STRING ou BINARY. NULL os valores são ignorados.

  • delimiter

    Uma expressão constante correspondente 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 sobre a qual a ordem é definida. As referências da coluna dentro sortKey também devem estar presentes em expr.

    • sort_direction

      Especifica a ordem de classificação para a ordem por expressão.

      • ASC: A direção de classificação para esta expressão é ascendente.
      • DESC: A ordem de classificação para esta 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 os valores NULL são retornados antes/depois de valores não-NULL. Se null_sort_order não for especificado, então os NULLs serão ordenados primeiro se a ordem de classificação for ASC e os NULLs serão ordenados 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 que filtra as linhas usadas para agregação.

Devoluções

A STRING if expr é um STRING, BINARY caso contrário.

Se DISTINCT for especificado, apenas valores exclusivos serão agregados e o sortKey deve corresponder .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