De agregaciónestándar SQL

AVG

Calcula la media aritmética de los valores de muchas filas.

Sintaxis

AVG(<expresión>)

Una función de agregación: suma los valores y los divide entre su cantidad. NULL no cuenta ni en la suma ni en la cantidad. El resultado suele tener muchos decimales, así que a menudo se envuelve en ROUND.

Datos para los ejemplos

employees

namedepartmentsalarybonusphone
Emmabackend1200300+44 7700 900123
Liambackend1000NULLNULL
Oliviafrontend1350150+44 7700 900456
Noahfrontend950NULL+44 7700 900789
Sophiadesign1200200NULL

Estas tablas ya están creadas en el entorno de pruebas y los ejemplos de abajo las usan. ¿Quieres repetirlo en tu propia base de datos? Copia el SQL.

El salario medio
SELECT AVG(salary) AS average_salary
FROM employees;
average_salary
1140.0000000000000000
El salario medio de cada departamento
SELECT department,
ROUND(AVG(salary)) AS average_salary
FROM employees
GROUP BY department
ORDER BY department;
departmentaverage_salary
backend1100
design1200
frontend1150
El bonus medio: con NULL y sin él
SELECT ROUND(AVG(bonus), 2) AS skip_nulls,
ROUND(AVG(COALESCE(bonus, 0)), 2) AS nulls_as_zero
FROM employees;
skip_nullsnulls_as_zero
216.67130.00

El primero divide la suma de bonus entre 3, solo quienes lo tienen. El segundo cuenta un bonus ausente como 0 y divide entre 5.

Ten en cuenta

NULL no cuenta como cero: la media de 300, NULL y 150 es 225, no 150. Si un valor ausente significa cero, escribe AVG(COALESCE(bonus, 0)).

Con enteros, el resultado sigue siendo decimal y con un montón de ceros: AVG(salary) da 1140.0000000000000000. Redondéalo: ROUND(AVG(salary), 2).

La media es sensible a los valores atípicos: un solo pedido de 10 000 hace que el «ticket medio» sea irreal. Un valor típico lo muestra mejor la mediana: PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY amount).

Funciones relacionadas

Más detalles en el curso