Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:
Databricks SQL
Databricks Runtime 11.3 LTS y versiones posteriores
Devuelve la media calculada de los valores de un grupo. Si hay un desbordamiento, devuelve NULL.
Sintaxis
try_avg( [ALL | DISTINCT] expr) [FILTER ( WHERE cond ) ]
Esta función también se puede invocar como una función de ventana mediante la cláusula OVER.
Argumentos
-
expr: expresión que devuelve un valor numérico o de intervalo. -
cond: una expresión booleana opcional que filtra las filas usadas para la agregación.
Devoluciones
El tipo de resultado se calcula como para los argumentos:
-
DECIMAL(p, s): el tipo de resultado esDECIMAL(p + 4, s + 4). Si se alcanza la precisión máxima de DECIMAL, el aumento de escala se limitará para evitar la pérdida de dígitos significativos. - Intervalo de año-mes: el resultado es un valor
INTERVAL YEAR TO MONTH. - Intervalo de día-hora: el resultado es un valor
INTERVAL YEAR TO SECOND. - En todos los demás casos, el resultado es un
DOUBLE.
Los valores NULL dentro del grupo se omiten. Si un grupo está vacío o solo consta de valores NULL, el resultado es NULL.
Si se especifica DISTINCT, la media se calcula después de quitar los duplicados.
Para generar un error en lugar de NULL en caso de que se produzca un desbordamiento, use avg.
Ejemplos
> 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