Función de ventana AVG - Amazon Redshift

Función de ventana AVG

La función de ventana AVG devuelve el promedio (media aritmética) de los valores de la expresión de entrada. La función AVG funciona con valores numéricos e ignora los valores NULL.

Sintaxis

AVG ( [ALL ] expression ) OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list frame_clause ] )

Argumentos

expression

La columna o expresión de destino sobre la que opera la función.

ALL

Con el argumento ALL, la función retiene todos los valores duplicados de la expresión para el conteo. El valor predeterminado es ALL. DISTINCT no se admite.

OVER

Especifica las cláusulas de ventana para las funciones de agregación. La cláusula OVER distingue funciones de agregación de ventana de las funciones de agregación de conjuntos normales.

PARTITION BY expr_list

Define la ventana para la función AVG en términos de una o más expresiones.

ORDER BY order_list

Ordena las filas dentro de cada partición. Si no se especifica PARTITION BY, ORDER BY utiliza toda la tabla.

frame_clause

Si se utiliza una cláusula ORDER BY para una función de agregación, se necesita una cláusula de marco explícita. La cláusula de marco limita el conjunto de filas en una ventana de función e incluye o excluye conjuntos de filas dentro del resultado ordenado. La cláusula de marco consta de la palabra clave ROWS y de los especificadores correspondientes. Consulte Resumen de la sintaxis de la función de ventana.

Tipos de datos

Los tipos de argumento compatibles con la función AVG son SMALLINT, INTEGER, BIGINT, NUMERIC, DECIMAL, REAL y DOUBLE PRECISION.

Los tipos de retorno compatibles con la función AVG son los siguientes:

  • BIGINT para los argumentos SMALLINT o INTEGER

  • NUMERIC para argumentos BIGINT

  • DOUBLE PRECISION para argumentos de punto flotante

Ejemplos

En el siguiente ejemplo, se calcula un promedio móvil de las cantidades vendidas por fecha; ordene los resultados por ID de fecha e ID de ventas:

select salesid, dateid, sellerid, qty, avg(qty) over (order by dateid, salesid rows unbounded preceding) as avg from winsales order by 2,1; salesid | dateid | sellerid | qty | avg ---------+------------+----------+-----+----- 30001 | 2003-08-02 | 3 | 10 | 10 10001 | 2003-12-24 | 1 | 10 | 10 10005 | 2003-12-24 | 1 | 30 | 16 40001 | 2004-01-09 | 4 | 40 | 22 10006 | 2004-01-18 | 1 | 10 | 20 20001 | 2004-02-12 | 2 | 20 | 20 40005 | 2004-02-12 | 4 | 10 | 18 20002 | 2004-02-16 | 2 | 20 | 18 30003 | 2004-04-18 | 3 | 15 | 18 30004 | 2004-04-18 | 3 | 20 | 18 30007 | 2004-09-07 | 3 | 30 | 19 (11 rows)

Para ver una descripción de la tabla WINSALES, consulte Tabla de muestra para ejemplos de funciones de ventana.