Funciones de agregación
En el artículo sobre la agrupación vimos que con la cláusula GROUP BY se pueden usar funciones de agregación. Vamos a verlas con más detalle 🐳.
Estructura general de una consulta con función de agregación
MySQL 8.4
SELECT { literal | funcion_agregacion | campo_agrupacion } [, ...]
FROM nombre_tabla
GROUP BY campo_agrupacion [, ...];- [ ]parte opcional
- { a | b }una de las opciones
- ...se puede repetir
- literal
Un valor fijo, por ejemplo 'text' o 1. Es el mismo para todos los grupos.
- funcion_agregacion
Una función que calcula un único valor a partir de todas las filas del grupo, por ejemplo AVG(price).
- campo_agrupacion
La columna por la que las filas se dividen en grupos: las filas con el mismo valor acaban en el mismo grupo. Puedes indicar varias columnas separadas por comas.
- nombre_tabla
- La tabla cuyas filas se agrupan.
Por ejemplo, una consulta con la función de agregación AVG puede tener este aspecto:
MySQL 8.4SELECT home_type, AVG(price) as avg_price FROM Rooms GROUP BY home_type
Descripción de las funciones de agregación
Ejemplos
-
Calculemos cuántos alojamientos hay de cada tipo y ordenemos la lista resultante de forma descendente:
MySQL 8.4SELECT home_type, COUNT(*) as amount FROM Rooms GROUP BY home_type ORDER BY amount DESC -
Para cada alojamiento, busquemos la fecha de salida más tardía (columna end_date):
MySQL 8.4SELECT room_id, MAX(end_date) AS last_end_date FROM Reservations GROUP BY room_id