Fonction d’agrégation try_avg

S’applique à :coche marquée oui Databricks SQL case marquée oui Databricks Runtime 11.3 LTS et versions ultérieures

Retourne la moyenne calculée à partir des valeurs d’un groupe. S’il existe un dépassement de capacité, retourne NULL.

Syntaxe

try_avg( [ALL | DISTINCT] expr) [FILTER ( WHERE cond ) ]

Cette fonction peut également être appelée en tant que fonction de fenêtre à l’aide de la clause OVER.

Arguments

  • expr : Expression qui retourne une valeur numérique ou d’intervalle.
  • cond : expression booléenne facultative qui filtre les lignes utilisées pour l’agrégation.

Retours

Le type de résultat est calculé comme pour les arguments :

  • DECIMAL(p, s) : le type de résultat est DECIMAL(p + 4, s + 4). Si la précision maximale de DECIMAL est atteinte, l’augmentation de l’échelle sera limitée pour éviter la perte de chiffres significatifs.
  • Intervalle d’année-mois : le résultat est INTERVAL YEAR TO MONTH.
  • intervalle de jour-heure : le résultat est INTERVAL YEAR TO SECOND.
  • Dans tous les autres cas, le résultat est une valeur DOUBLE.

Les valeurs Null au sein du groupe sont ignorées. Si un groupe est vide ou comprend uniquement des valeurs Null, le résultat est NULL.

Si DISTINCT est spécifié, la moyenne est calculée après la suppression des doublons.

Pour déclencher une erreur au lieu de NULL en cas de dépassement de capacité, utilisez avg.

Exemples

> SELECT try_avg(col) FROM VALUES (1), (2), (3) AS tab(col);
 2.0

> SELECT try_avg(DISTINCT col) FROM VALUES (1), (1), (2) AS tab(col);
 1.5

> SELECT try_avg(col) FROM VALUES (1), (2), (NULL) AS tab(col);
 1.5

> SELECT try_avg(col) FROM VALUES (INTERVAL '1' YEAR), (INTERVAL '2' YEAR) AS tab(col);
 1-6

-- Overflow results in NULL for try_avg()
> SELECT try_avg(col) FROM VALUES (5e37::DECIMAL(38, 0)), (5e37::DECIMAL(38, 0)) AS tab(col);
 NULL

-- Overflow causes error for avg() in ANSI mode.
> SELECT avg(col) FROM VALUES (5e37::DECIMAL(38, 0)), (5e37::DECIMAL(38, 0)) AS tab(col);
 Error: CANNOT_CHANGE_DECIMAL_PRECISION