Las consultas resumen (o consultas agregadas) en SQL son aquellas que permiten resumir o agrupar datos de una tabla para obtener información estadística o métricas globales. Estas consultas utilizan funciones de agregación para calcular valores como sumas, promedios, conteos, máximos o mínimos sobre un conjunto de registros.
COUNT()
: Cuenta el número de registros.SELECT COUNT(*) AS total_clientes FROM clientes;
SUM()
: Suma los valores de una columna numérica.SELECT SUM(ventas) AS ventas_totales FROM pedidos;
AVG()
: Calcula el promedio de una columna numérica.SELECT AVG(precio) AS precio_promedio FROM productos;
MAX()
: Obtiene el valor máximo de una columna.SELECT MAX(sueldo) AS sueldo_maximo FROM empleados;
MIN()
: Obtiene el valor mínimo de una columna.SELECT MIN(stock) AS stock_minimo FROM inventario;
GROUP BY
Para resumir datos por categorías o grupos, se usa GROUP BY
. Por ejemplo, agrupar ventas por región o clientes por país:
SELECT region, SUM(ventas) AS ventas_por_region
FROM pedidos
GROUP BY region;
HAVING
Si necesitas filtrar grupos (similar a WHERE
pero para grupos), usa HAVING
:
SELECT pais, COUNT(*) AS total_clientes
FROM clientes
GROUP BY pais
HAVING COUNT(*) > 10; -- Solo países con más de 10 clientes
Supongamos una tabla ventas
:
producto | cantidad | precio |
---|---|---|
Lápiz | 100 | 1.5 |
Cuaderno | 50 | 5.0 |
Lápiz | 200 | 1.5 |
Consulta resumen por producto:
SELECT
producto,
SUM(cantidad) AS unidades_vendidas,
SUM(cantidad * precio) AS ingresos_totales
FROM ventas
GROUP BY producto;
Resultado:
producto | unidades_vendidas | ingresos_totales |
---|---|---|
Lápiz | 300 | 450.0 |
Cuaderno | 50 | 250.0 |
WHERE
vs. HAVING
:
WHERE
filtra registros antes de agrupar.HAVING
filtra grupos después de agrupar.AS
para nombrar columnas resultantes de manera legible.AVG(SUM(...))
), pero esto puede requerir subconsultas.