Agregación · medias

AVG

AVG calcula la media de los valores conocidos, pero la pregunta define qué filas y qué peso debe tener cada una.

Lectura: 5–7 minEjemplo comprobadoPráctica con pistas
Contenido de esta guía

Qué mide AVG

AVG calcula la media aritmética de los valores no nulos de una expresión. Suma esos valores y los divide entre la cantidad de valores conocidos, no entre todas las filas.

Una media solo es útil cuando el conjunto responde a una pregunta concreta. «Precio medio» puede significar todos los productos, solo los disponibles o una media ponderada por unidades vendidas; son cálculos distintos.

Sintaxis básica

Estructura
SELECT AVG(columna) AS promedio
FROM tabla
WHERE condicion;

Redondea para presentar, no para filtrar. Conserva la precisión durante el cálculo y aplica ROUND al resultado visible. Redondear cada fila antes de promediar puede cambiar el valor final.

Ejemplo guiado: precio medio disponible

Primero excluimos los productos agotados. Añadimos COUNT(*) para que el denominador sea visible y el resultado pueda interpretarse.

SQL
SELECT COUNT(*) AS productos_con_stock,
       ROUND(AVG(precio), 2) AS precio_medio
FROM productos
WHERE stock > 0;
Resultado comprobado
productos_con_stockprecio_medio
796,19

La media se calcula con siete productos. No está ponderada por el stock: un producto con treinta unidades pesa lo mismo que otro con dos.

AVG y los valores NULL

Si una columna contiene diez filas y dos son NULL, AVG(columna) divide entre ocho. Convertir esos nulos a cero con COALESCE cambia la pregunta y reduce la media; solo hazlo cuando cero sea realmente el valor que falta.

Error frecuente

Confundir media simple y media ponderada

AVG(precio) calcula la media de los precios de producto. Para conocer el precio medio por unidad vendida necesitarías ponderar por cantidad: sumar importe y dividir entre unidades. Elige la fórmula a partir de la pregunta, no del nombre de la función.

Comprueba lo aprendido

Básica · media filtrada

Calcula el pedido medio pendiente

Calcula el valor medio de total para los pedidos pendientes. Redondea a dos decimales y usa el alias pedido_medio_pendiente.

Compatibilidad entre motores

AVG está ampliamente disponible y omite entradas nulas. El tipo del resultado depende del tipo de datos y del motor. SQLite calcula avg() a partir de total()/count(); otros motores documentan tipos de retorno específicos para enteros, decimales o intervalos.

Qué debes recordar

  • AVG usa únicamente valores no nulos.
  • El filtro define el conjunto antes de calcular.
  • Una media simple no pondera por cantidades.
  • Redondear es una decisión de presentación.

Conceptos relacionados

Fuentes técnicas consultadas