...

Funciones de agregación avanzadas en SQL

Hasta ahora, ya conoces las funciones de agregación básicas como COUNT, SUM, AVG, MAX y MIN.
Pero SQL ofrece muchas más opciones que permiten crear reportes poderosos y análisis avanzados.

En este artículo aprenderás:

  • Qué son las funciones de agregación avanzadas.
  • Ejemplos prácticos con datos de empleados y departamentos.
  • Diferencias entre motores como SQL Server, PostgreSQL y MySQL.
  • Buenas prácticas de uso y rendimiento.

Todos los ejemplos puedes ejecutarlos en db-fiddle.com.


¿Qué son las funciones de agregación avanzadas?

Las funciones de agregación permiten resumir o combinar información a partir de varias filas.
Las más básicas (COUNT, SUM, AVG, MAX, MIN) son universales, pero hay más funciones que varían según el motor:

  • STRING_AGG() → concatenar valores de varias filas en una sola cadena (SQL Server, PostgreSQL).
  • GROUP_CONCAT() → similar, en MySQL y SQLite.
  • VAR(), STDDEV() → calcular varianza y desviación estándar (PostgreSQL, MySQL).
  • PERCENTILE_CONT() y PERCENTILE_DISC() → percentiles (SQL Server, PostgreSQL).

Datos de referencia

Seguiremos usando la tabla empleados:

id_empleadonombrepuestosalariofecha_contratacionid_departamento
1Ana TorresGerente de Ventas900002019-01-151
2Luis PérezEjecutivo de Ventas650002020-03-101
3Carlos LópezAnalista Financiero600002021-06-253
4Marta DíazEspecialista Marketing720002018-09-052
5Pedro GarcíaDesarrollador Backend800002022-01-184
6Sofía RuizDesarrollador Frontend800002022-02-104

Ejemplo 1: Concatenar nombres de empleados por departamento

-- PostgreSQL / SQL Server
SELECT id_departamento,
       STRING_AGG(nombre, ', ') AS empleados
FROM empleados
GROUP BY id_departamento;

-- MySQL / SQLite
SELECT id_departamento,
       GROUP_CONCAT(nombre SEPARATOR ', ') AS empleados
FROM empleados
GROUP BY id_departamento;

Ejemplo 2: Calcular desviación estándar de salarios

-- PostgreSQL / MySQL
SELECT id_departamento,
       STDDEV(salario) AS desviacion_salarial
FROM empleados
GROUP BY id_departamento;

Ejemplo 3: Percentiles de salario

-- SQL Server y PostgreSQL
SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY salario) AS mediana
FROM empleados;

Buenas prácticas

  1. Conoce el soporte de tu motor SQL: no todas las funciones avanzadas están disponibles en todos.
  2. Cuida el rendimiento: STRING_AGG y GROUP_CONCAT pueden volverse pesados en tablas grandes.
  3. Documenta el uso de estadísticas: si usas percentiles, define claramente cuál (ej. P50, P90).
  4. Usa alias descriptivos: mejora la legibilidad de tus consultas.

Diferencias entre motores

Motor SQLSoporte de funciones
SQL ServerSTRING_AGG, PERCENTILE_CONT, VAR, STDEV
PostgreSQLMuy completo, soporta la mayoría de estadísticas
MySQLGROUP_CONCAT, STDDEV, VAR_POP
SQLiteGROUP_CONCAT, menos funciones estadísticas

Conclusión

Las funciones de agregación avanzadas te permiten ir más allá de los simples promedios y sumas.
Son clave para crear reportes inteligentes y análisis estadísticos dentro de SQL.

👉 Practica estos ejemplos en db-fiddle.com y empieza a usarlos en tus propios proyectos.

Deja un comentario

Seraphinite AcceleratorOptimized by Seraphinite Accelerator
Turns on site high speed to be attractive for people and search engines.