Funciones de Agrupación
1. Curso sobre Funciones de Agregación en SQL #
Las funciones de agregación en SQL permiten realizar cálculos sobre un conjunto de valores y devolver un solo valor resumido. Estas funciones se utilizan comúnmente con la cláusula GROUP BY para agrupar resultados.
Esta es la tabla con las que vamos a ver los ejemplos:
| Nombre | Apellido | Salario | Departamento | Fecha Contratación | Correo | Teléfono | Dirección | Hijos |
|---|---|---|---|---|---|---|---|---|
| Juan | Pérez | 2500.00 | IT | 2020-05-15 | juan.perez@email.com | 123456789 | Calle 123, Ciudad A | 2 |
| María | González | 3200.00 | Recursos Humanos | 2018-09-10 | maria.gonzalez@email.com | 987654321 | Avenida 45, Ciudad B | 2 |
| Carlos | Rodríguez | 2800.00 | Marketing | 2019-07-21 | carlos.rodriguez@email.com | 456789123 | Calle 10, Ciudad C | 0 |
| Ana | López | 3100.00 | Ventas | 2017-03-05 | ana.lopez@email.com | 159753486 | Avenida 89, Ciudad D | 1 |
| Luis | Fernández | 2700.00 | IT | 2021-11-12 | luis.fernandez@email.com | 753951258 | Calle 77, Ciudad E | 1 |
| Sofía | Martínez | 3300.00 | Finanzas | 2016-02-20 | sofia.martinez@email.com | 852741963 | Calle 15, Ciudad F | 1 |
| David | Ramírez | 2900.00 | Marketing | 2019-10-30 | david.ramirez@email.com | 369258147 | Avenida 12, Ciudad G | 1 |
| Laura | Hernández | 3400.00 | Recursos Humanos | 2015-06-18 | laura.hernandez@email.com | 741852963 | Calle 98, Ciudad H | 0 |
| Pedro | Torres | 2600.00 | IT | 2022-01-25 | pedro.torres@email.com | 258369147 | Avenida 23, Ciudad I | 3 |
| Elena | Díaz | 3150.00 | Ventas | 2018-04-14 | elena.diaz@email.com | 159357486 | Calle 36, Ciudad J | 9 |
2. COUNT() - Contar Filas #
La función COUNT() se usa para contar el número de filas en una tabla o en un grupo de datos.
Ejemplo: #
1SELECT COUNT(*) FROM empleados;
Este código cuenta todas las filas en la tabla empleados.
Para contar solo valores distintos en una columna específica:
1SELECT COUNT(DISTINCT departamento) FROM empleados;
Esto contará los departamentos únicos en la tabla empleados.
3. SUM() - Sumar Valores #
La función SUM() calcula la suma de una columna numérica.
Ejemplo: #
1SELECT SUM(salario) FROM empleados; 2-- Si no hay filas, el resultado será NULL, no 0. 3SELECT COALESCE(SUM(salario), 0) FROM empleados;
Esto devuelve la suma de todos los salarios en la tabla empleados.
Se puede combinar con GROUP BY:
1SELECT departamento, SUM(salario) FROM empleados GROUP BY departamento;
Agrupa los salarios por departamento y calcula la suma de los salarios en cada uno.
4. AVG() - Promedio #
La función AVG() devuelve el promedio de los valores en una columna numérica.
Ejemplo: #
1SELECT AVG(salario) FROM empleados;
Esto devuelve el salario promedio de todos los empleados.
Para obtener el promedio por departamento:
1SELECT departamento, AVG(salario) FROM empleados GROUP BY departamento;
Agrupa por departamento y calcula el promedio de los salarios.
Ejemplo: #
Vamos a calcular que empleados cobran por encima de la media
1select nombre, apellido,salario from empleado where salario > ( select avg(salario) from empleado )
Ejemplo: #
Muestra el nombre y apellidos del empleado y un mensaje idicando si esta por encima o por debajo de la media
1select nombre, apellido, 2 case when salario > ( select avg(salario) from empleado ) 3 then 'por encima de la media' 4 else 'por debajo de la media' 5 end as situacion 6from empleado
Ejemplo: #
¿Cuánto hijos de media suelen tener mis empleados?
1select avg(hijos) from empleado
Ejemplo: #
¿Cuál es la moda de hijos (el valor que más se repite) ?
5. MIN() y MAX() - Valor Mínimo y Máximo #
Las funciones MIN() y MAX() devuelven el valor mínimo y máximo de una columna, respectivamente.
Ejemplo: #
1SELECT MIN(salario) FROM empleados; 2SELECT MAX(salario) FROM empleados;
Esto devuelve el salario más bajo y el más alto en la tabla empleados.
Para obtener estos valores por departamento:
1SELECT departamento, MIN(salario), MAX(salario) FROM empleados GROUP BY departamento;
Ejemplo: #
Muestra el empleado que más cobra
1select nombre, apellido from empleado where salario = (select max(salario) from empleado)
6. GROUPCONCAT() / STRINGAGG() / LISTAGG() - Concatenación de Valores #
Estas funciones concatenan valores de una columna en un solo resultado.
Ejemplo: #
Esto devuelve una lista de nombres separados por comas.
Ejemplo: #
Obtén todos los emails de los empleados separados por comas
7. STDDEV() y VARIANCE() - Desviación Estándar y Varianza #
Estas funciones se usan para cálculos estadísticos.
- STDDEV(salario): devuelve la desviación estándar muestral del salario.
- VARIANCE(salario): devuelve la varianza muestral del salario.
Ejemplo: #
Para calcular por departamento:
8. MEDIAN() - Mediana #
Esto devuelve la mediana de los salarios.
Resumen del tema
Conceptos clave #
- Funciones de Agregación Básicas:
COUNT()cuenta filas o valores no nulos (DISTINCT),SUM()calcula el total numérico,AVG()obtiene la media aritmética, yMIN()/MAX()devuelven los valores mínimo y máximo. - Agrupación con
GROUP BY: permite calcular las agregaciones por grupos o categorías específicas en lugar de sobre toda la tabla. - Concatenación de Valores: permite fusionar textos de un grupo en una sola cadena (
GROUP_CONCATen MySQL/SQLite,STRING_AGGen PostgreSQL/SQL Server,LISTAGGen Oracle). - Estadística Avanzada: cálculo de dispersión (
STDDEV,VARIANCE) y posición central (MEDIANoPERCENTILE_CONTsegún el motor).
Qué debes recordar #
Las funciones de agregación reducen múltiples filas a un único valor resumido por grupo o tabla, ignorando por defecto los valores NULL (salvo COUNT(*)).