Partager via


string_agg Fonction d’agrégation

S’applique à :coché oui Databricks SQL coché oui Databricks Runtime 16.4 et versions ultérieures

Retourne les valeurs STRING et BINARY concaténées au sein d’un groupe.

Cette fonction est un alias pour la fonction listagg.

Syntaxe

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 ]

Cette fonction peut également être appelée en tant que fonction de fenêtre en utilisant la OVER si la WITHIN GROUP et la FILTER sont omises.

Les arguments

  • expr

    Expression qui prend la valeur d’un STRING ou BINARY. NULL les valeurs sont ignorées.

  • delimiter

    Expression constante correspondant au type utilisé expr pour séparer les valeurs concaténées. La valeur par défaut est une chaîne vide ('') pour STRING et un binaire de longueur nulle (''::BINARY) pour BINARY.

  • ORDER BY

    Expression utilisée pour classer les valeurs avant la concaténation. La valeur par défaut est l’ordre des lignes du groupe.

    • sortKey

      Expression sur laquelle l’ordre est défini. Les références de colonne au sein de sortKey doivent également être présentes dans expr.

    • sort_direction

      Spécifie l’ordre de tri pour l’expression Order By.

      • ASC : la direction de tri est croissant pour cette expression.
      • DESC : l’ordre de tri est croissant pour cette expression.

      Si l’ordre de tri n’est pas spécifié explicitement, les lignes par défaut sont triées par ordre croissant.

    • nulls_sort_order

      Spécifie éventuellement si les valeurs NULL sont retournées avant/après les valeurs non NULL. Si null_sort_order n’est pas spécifié, les valeurs NULL sont triées en premier si l’ordre de tri est ASC et les valeurs NULL sont triées en dernier si l’ordre de tri est DESC.

      • NULLS FIRST: NULL les valeurs sont retournées en premier, quel que soit l’ordre de tri.
      • NULLS LAST: NULL les valeurs sont retournées en dernier, quel que soit l’ordre de tri.
  • cond: expression facultative BOOLEAN filtrant les lignes utilisées pour l’agrégation.

Retours

Un STRING si expr est un STRING, BINARY sinon.

Si DISTINCT est spécifié, seules les valeurs uniques sont agrégées et le sortKey doit correspondre au expr.

Exemples

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