Función agregada AVG

La función AVG devuelve el promedio de un conjunto de números.

Read syntax diagramSkip visual syntax diagramAVG(ALLDISTINCTexpression)

El esquema es SYSIBM.

expresión
Expresión que devuelve un conjunto de valores numéricos o booleanos incorporados. La función AVG omite cualquier valor nulo que pueda contener la expresión.
ALL o DISTINCT
Si se especifica ALL, se utilizan todos los valores que devuelve la expresión, incluidos los valores duplicados, para calcular el promedio (este es el valor por omisión). Si se especifica DISTINCT, se omiten los valores duplicados. Los valores de coma flotante que son numéricamente iguales se tratan como duplicados, incluso si tienen números de dígitos significativos diferentes. Por ejemplo, si el conjunto de valores que devuelve una expresión incluye los números de coma flotante decimales 123, 123,0 y 123,00, sólo se utiliza uno de estos valores para calcular el promedio.

Resultado

El tipo de datos del resultado es el mismo que el tipo de datos de la excepción de entrada, con las siguientes excepciones:
  • Si el tipo de datos de la expresión de entrada es SMALLINT, el tipo de datos del resultado es INTEGER.
  • Si el tipo de datos de la expresión de entrada es BOOLEAN, el tipo de datos del resultado es BIGINT. El resultado es 1 sólo si todos los valores que devuelve la expresión de entrada también son 1. De lo contrario, el resultado es 0.
  • Si el tipo de datos de la expresión de entrada es coma flotante de precisión simple (REAL), el tipo de datos del resultado es coma flotante de precisión doble (DOUBLE).
  • Si el tipo de datos de la expresión de entrada es DECFLOAT (n), el tipo de datos del resultado es DECFLOAT (34).
  • Si la expresión de entrada es un valor DECIMAL con una precisión p y una escala s, el resultado es un DECIMAL con la precisión y esscala siguientes:
    Tabla 1. Precisión y escala de resultado de la función de agregación AVG con entrada DECIMAL
    Modalidad aritmética DECIMAL1 p Precisión de resultado Escala de resultado
    predeterminado n/a 31 31-p+s
    DEC15 <=15 15 15-p+s
    DEC15 >15 31 MAX(0,28-p+s)
    DEC31 n/a 31 MAX(0,28-p+s)
    Nota:
    1. Estos modos están determinados por el parámetro de configuración dec_arithmetic.

Si el tipo de datos del resultado es SMALLINT, INTEGER o BIGINT, se trunca la parte fraccional del promedio. No se redondea.

Durante la evaluación, el orden en que se añaden conjuntamente los valores de entrada no está definido, pero cada resultado intermedio debe estar dentro del rango del tipo de datos del resultado.

El resultado puede ser nulo. Si se aplica la función a un conjunto vacío, el resultado es un valor nulo, de lo contrario, el resultado es el valor promedio del conjunto.

ejemplos

  • Ejemplo 1: Establezca, utilizando la tabla PROJECT, la variable del lenguaje principal AVERAGE (decimal(5,2)) en el nivel promedio de los trabajadores (PRSTAFF) de los proyectos del departamento (DEPTNO) 'D11'.
       SELECT AVG(PRSTAFF)
         INTO :AVERAGE
         FROM PROJECT
         WHERE DEPTNO = 'D11'

    Da como resultado que AVERAGE se establece en 4,25 (es decir 17/4) cuando se utiliza la tabla de ejemplo.

  • Ejemplo 2: Establezca, utilizando la tabla PROJECT, la variable del lenguaje principal ANY_CALC (decimal(5,2)) en el promedio de cada valor de nivel exclusivo de los trabajadores (PRSTAFF) de los proyectos del departamento (DEPTNO) 'D11'.
       SELECT AVG(DISTINCT PRSTAFF)
         INTO :ANY_CALC
         FROM PROJECT
         WHERE DEPTNO = 'D11'

    El resultado es que ANY_CALC se establece en 4,66 (es decir 14/3) cuando se utiliza la tabla de ejemplo.