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 BYPara 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;
HAVINGSi 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.