Compartir vía


string_agg (función de agregación)

Se aplica a:marcado como sí Databricks SQL marcado como sí Databricks Runtime 16.4 y versiones posteriores

Devuelve valores concatenados STRING y BINARY dentro de un grupo.

Esta función es un alias para la función listagg.

Sintaxis

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 función también se puede invocar como una función de ventana mediante la cláusula OVER si se omiten las cláusulas WITHIN GROUP y FILTER.

Argumentos

  • expr

    Expresión de que se evalúa como un elemento STRING o BINARY. Se omiten los valores NULL.

  • delimiter

    Expresión constante que coincide con el tipo de expr usado para separar los valores concatenados. El valor predeterminado es una cadena vacía ('') para STRING y un binario de longitud cero (''::BINARY) para BINARY.

  • ORDER BY

    Expresión que se usa para ordenar los valores antes de la concatenación. El valor predeterminado es el orden de las filas del grupo.

    • sortKey

      Expresión en la que se define el orden. Las referencias de columna dentro de sortKey también deben estar presentes en expr.

    • sort_direction

      Especifica el criterio de ordenación para la ordenación por expresión.

      • ASC: la dirección de ordenación de esta expresión es ascendente.
      • DESC: el criterio de ordenación de esta expresión es descendente.

      Si no se especifica explícitamente la dirección de ordenación de las filas, el orden es ascendente de manera predeterminada.

    • nulls_sort_order

      También puede especificar si se devuelven valores NULL antes o después de valores distintos de NULL. Si no se especifica null_sort_order, los valores NULL se ordenan primero si el criterio de ordenación es ASC; si el criterio de ordenación es DESC, se ordenan al final.

      • NULLS FIRST: NULL los valores se devuelven primero independientemente del criterio de ordenación.
      • NULLS LAST: NULL los valores se devuelven en último lugar, independientemente del criterio de ordenación.
  • cond: Una expresión BOOLEAN opcional que filtra las filas usadas para la agregación.

Devoluciones

Un STRING si expr es un STRING; De lo contrario, BINARY.

Si se especifica DISTINCT, solo se agregan valores únicos y sortKey debe coincidir con expr.

Ejemplos

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