Puedes ejecutar cualquier consulta en nuestra consola interactiva: Abrir consola SQL →
Funciones de agregación avanzadas en SQL
Las funciones de agregación avanzadas permiten realizar análisis complejos, métricas profesionales y cálculos de alto nivel. Son esenciales en reportes, dashboards, analítica y sistemas empresariales.
Tabla de contenidos
1. Repaso de agregaciones básicas
SELECT COUNT(*) FROM ventas;
SELECT SUM(cantidad) FROM ventas;
SELECT AVG(precio) FROM productos;
SELECT MIN(precio), MAX(precio) FROM productos;
2. Agregaciones con DISTINCT
SELECT COUNT(DISTINCT cliente_id) AS clientes_unicos
FROM ventas;
3. Filtrado avanzado con HAVING
SELECT cliente_id, SUM(cantidad) AS total
FROM ventas
GROUP BY cliente_id
HAVING SUM(cantidad) > 100;
4. ROLLUP
SELECT categoria, producto, SUM(cantidad)
FROM ventas
GROUP BY ROLLUP(categoria, producto);
5. CUBE
SELECT categoria, producto, SUM(cantidad)
FROM ventas
GROUP BY CUBE(categoria, producto);
6. GROUPING SETS
SELECT categoria, producto, SUM(cantidad)
FROM ventas
GROUP BY GROUPING SETS (
(categoria),
(producto),
(categoria, producto)
);
7. Percentiles y estadísticas
SELECT
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY precio) AS mediana,
PERCENTILE_CONT(0.9) WITHIN GROUP (ORDER BY precio) AS p90
FROM productos;
8. Ejemplos prácticos
-- Ventas por cliente y totales
SELECT cliente_id, SUM(cantidad)
FROM ventas
GROUP BY ROLLUP(cliente_id);
-- Estadísticas de precios
SELECT
AVG(precio) AS promedio,
STDDEV(precio) AS desviacion,
VARIANCE(precio) AS varianza
FROM productos;
9. Ejercicios para practicar
- Cuenta clientes únicos.
- Filtra clientes con más de 50 ventas.
- Genera un ROLLUP por categoría.
- Genera un CUBE por producto.
- Calcula percentiles de precios.
SELECT COUNT(DISTINCT cliente_id) FROM ventas;
SELECT cliente_id FROM ventas GROUP BY cliente_id HAVING SUM(cantidad) > 50;
SELECT categoria, SUM(cantidad) FROM ventas GROUP BY ROLLUP(categoria);
SELECT producto, SUM(cantidad) FROM ventas GROUP BY CUBE(producto);
SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY precio) FROM productos;
10. Mini‑proyecto: Reporte empresarial avanzado
SELECT categoria, producto, SUM(cantidad)
FROM ventas
GROUP BY GROUPING SETS (
(categoria),
(producto),
(categoria, producto)
);
11. Errores comunes
- Confundir ROLLUP con CUBE.
- Usar HAVING como WHERE.
- No entender GROUPING SETS.
- Calcular percentiles sin ordenar.
12. Preguntas frecuentes
¿ROLLUP y CUBE funcionan en todas las bases?
Depende del motor, pero la mayoría los soportan.
¿Las agregaciones avanzadas son costosas?
Sí, requieren índices y optimización.