La función WINDOW_AVG devuelve el valor medio de los resultados de la expresión aplicada a los valores incluidos en la ventana de la tabla actual cuyos límites se indican como argumentos.
WINDOW_AVG(
<expresión>
[, comienzo,
fin]
)
- expresión: expresión a evaluar para la ventana indicada
- comienzo: (opcional) posición relativa a la fila actual de la fila que define el comienzo de la ventana
- fin: (opcional) posición relativa a la fila actual de la fila que define el final de la ventana
La función WINDOW_AVG devuelve un número.
Las posiciones relativas definidas por los parámetros comienzo y fin se indican con signo negativo cuando las filas referenciadas se encuentran antes que la fila actual (si se recorre la tabla de arriba abajo) y con signo positivo cuando se encuentran después.
Si no se indican los límites de la ventana, la función considera toda la tabla.
Si alguna de las filas de la ventana indicada no existe (por estar evaluando la ventana para una fila demasiado próxima al comienzo o al final de la tabla), simplemente se ignora.
Vamos a trabajar con la siguiente tabla de datos:
Comencemos por ejemplo más sencillo en el que la ventana a considerar incluye apenas la fila actual. Para ello podemos crear el siguiente campo calculado:
window_avg =
WINDOW_AVG(SUM([Valor]), 0, 0)
En este caso el valor devuelto por la expresión no es más que el valor del campo Valor para la fila que corresponda (no es más que la suma del número).
Si llevamos los campos de la tabla (dando al campo Valor formato Discreto) y el campo calculado al lienzo, obtenemos el siguiente resultado:
Tal y como cabría esperar, el resultado de la función para cada fila coincide con el valor del campo Valor en esa fila. En este caso, la ventana para la fila 3 es la mostrada en la siguiente imagen (es la propia fila 3):
Vemos también que el resultado devuelto para el valor nulo es un BLANK.
Hagamos ahora que la ventana cubra 3 filas, comenzando dos filas antes y terminando con la fila actual:
window_avg =
WINDOW_AVG(SUM([Valor]), -2, 0)
Ahora el resultado es el siguiente:
La ventana para la fila 3, por ejemplo, es la mostrada en la siguiente imagen:
Efectivamente, (2 + 1 + 4) / 3 = 2.333, resultado devuelto para la tercera fila.
Las primeras dos filas no tienen otras dos que las precedan, de forma que la ventana simplemente comienza en la primera fila de la tabla.
El valor nulo de la fila 6 se ignora en el cálculo. Por ejemplo, el resultado de la función para la fila 8 es (nulo + 1 + 5) / 3 = 3.
Por último, repitamos el cálculo para una ventana que incluya, además de la fila actual, la anterior y la posterior:
window_avg =
WINDOW_AVG(SUM([Valor]), -1, 1)
El resultado en este caso es el siguiente:
La ventana para la fila 3, por ejemplo, es la mostrada en la siguiente imagen:
Efectivamente, (1 + 4 + 3) / 3 = 2.667, que es el resultado devuelto para la fila 3.