> lección 10/18 · 14 min

Funciones de agregación

Concepto

Hasta ahora cada fila del resultado correspondía a una fila de la tabla. Las funciones de agregación hacen lo contrario: resumen muchas filas en un solo valor, como el total, el promedio o el máximo.

Sintaxis
SELECT COUNT(*), AVG(columna), MIN(columna), MAX(columna), SUM(columna)
FROM tabla;

Una tabla entera, una fila. Sin GROUP BY (la próxima lección), una consulta con agregaciones devuelve exactamente una fila con el resumen de toda la tabla.

SELECT COUNT(*) AS cursos, SUM(horas) AS horas_totales FROM cursos;

AVG, MIN y MAX. El promedio, el menor y el mayor valor de una columna. El promedio suele llevar ROUND.

SELECT ROUND(AVG(horas), 1) AS horas_promedio, MIN(horas) AS curso_mas_corto, MAX(horas) AS curso_mas_largo FROM cursos;

COUNT(*) o COUNT(columna). COUNT(*) cuenta filas. COUNT(columna) cuenta solo las filas donde esa columna tiene dato: los NULL no se cuentan. La diferencia entre los dos es la cantidad de datos faltantes.

SELECT COUNT(*) AS estudiantes, COUNT(correo) AS con_correo FROM estudiantes;

Las agregaciones ignoran los NULL. AVG, MIN, MAX y SUM trabajan solo con los valores que existen. Es lo que normalmente quieres, pero conviene saberlo: un promedio sobre 11 notas no es un promedio sobre 12 inscripciones.

> tarea SQL

Prepara el resumen del semestre en una sola fila, con estas columnas: total_inscripciones (todas las inscripciones), con_nota (las que ya tienen nota), promedio_general (el promedio de las notas, redondeado a 2 decimales), nota_minima y nota_maxima.

Tablas disponibles
  • cursos: id, titulo, nivel, horas
  • estudiantes: id, nombre, correo, edad, ciudad
  • inscripciones: id, estudiante_id, curso_id, nota, estado

Primero intenta: las pistas aparecen después de 2 intentos con un resultado incorrecto (los errores de código no cuentan). Llevas 0.

Aprueba las tareas de esta lección para ver el cierre.