La función AVG() nos devuelve el promedio de una columna numérica. O sea que halla la suma de esa columna y luego la divide por la cantidad de filas que no sean NULL, es decir que si en una fila hay NULL no la utiliza en el cálculo.

Para entender mejor a la función AVG() consideremos una tabla que tiene 7 filas, las cuales en una columna numérica tienen estos valores:

20
40
10
20
NULL
NULL
NULL

Ejemplo 1:

El promedio según la función AVG() es:

SELECT
   AVG(MiColumna)
FROM
   MiTabla

90 / 4 = 22,5

Se dividió por 4 y no por 7, porque las filas con NULL para la función AVG() son inexistentes.

Ejemplo 2:

En la misma tabla anterior queremos hallar el promedio de esa columna pero esta vez considerando a las filas que tienen NULL, en ese caso deberíamos escribir:

SELECT
   SUM(MiColumna) / COUNT(*)
FROM
   MiTabla

90 / 7 = 12,8571

Ejemplo 3:

Si lo que nos interesa es hallar el promedio considerando solamente los valores distintos entonces escribiríamos:

SELECT
   AVG(DISTINCT MiColumna)
FROM
   MiTabla

70 / 3 = 23,3333

Hay 3 valores distintos (20, 40, 10) porque uno de ellos (20) está repetido y por lo tanto no se lo usa ni en la suma ni en la cantidad de filas. La suma de los valores distintos (20 + 40 + 10) es 70 y la cantidad de valores distintos es 3, por lo tanto el promedio es 70 / 3 = 23,3333

Artículos relacionados:

La función AVG()

El índice del blog Firebird21

 

Anuncios