Kodokon kodokon.com

Agregar: COUNT, SUM, AVG, MIN/MAX y GROUP BY

Calcula totales, promedios y estadísticas por grupo usando funciones de agregación y GROUP BY.

8 min · 3 preguntas

Abrir esta lección en Kodokon

Una función de agregación toma varias filas como entrada y devuelve un solo valor: un total, un promedio, un mínimo... La más sencilla es COUNT(*), que cuenta las filas. Se combina de forma natural con WHERE: la base de datos filtra primero y luego cuenta.

SQL
SELECT COUNT(*) FROM books;

SELECT COUNT(*) FROM books WHERE genre = 'sf';
7 libros en total, de los cuales 4 son de ciencia ficción

Las demás agregaciones esenciales se aplican a una columna: SUM(price) suma, AVG(price) calcula el promedio, MIN(year) y MAX(year) encuentran los valores más pequeño y más grande. La palabra clave AS asigna un alias, es decir, un nombre legible para la columna calculada.

SQL
SELECT SUM(price) AS total FROM books;

SELECT AVG(price) AS avg_sf
FROM books
WHERE genre = 'sf';

SELECT MIN(year), MAX(year) FROM books;
Total: 52.4; promedio sf: 8.375; 1888 y 1965

¿Y para obtener una estadística por categoría? Ese es el papel de GROUP BY: la base de datos agrupa las filas que comparten el mismo valor (aquí el género) y luego aplica la agregación a cada grupo. El resultado contiene una fila por grupo.

SQL
SELECT genre, COUNT(*) AS nb
FROM books
GROUP BY genre;

SELECT genre, AVG(price) AS avg_price
FROM books
GROUP BY genre;
sf: 4 libros; aventure: 2; conte: 1

Prueba de conocimientos

Comprueba que has retenido los puntos clave de esta lección.

  1. ¿Qué devuelve SELECT COUNT(*) FROM books;?
    • El número de columnas de la tabla
    • El número de filas de la tabla
    • La lista de todos los libros
  2. ¿Qué función calcula el precio promedio de los libros?
    • SUM(price)
    • AVG(price)
    • MEAN(price)
    • MAX(price)
  3. ¿Qué produce SELECT genre, COUNT(*) FROM books GROUP BY genre;?
    • Una fila por libro, con su género
    • Una sola fila con el número total de libros
    • Una fila por género, con el número de libros de ese género