En MySQL, las funciones de agregado se utilizan para realizar cálculos en un conjunto de registros y devolver un único valor basado en esos datos. Son herramientas poderosas cuando se necesita resumir, contar o analizar grandes volúmenes de datos. Este tipo de funciones se utilizan principalmente en consultas con las cláusulas SELECT, GROUP BY, HAVING.
Funciones de Agregado
Primero que todo, debemos contar con una tabla y registros, para los siguientes ejemplos para explorar las funciones de agregado, vamos a tener una tabla de empleados y algunos registros:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-- Crear la tabla de empleados:CREATETABLEempleados(idINTAUTO_INCREMENTPRIMARYKEY,nombreVARCHAR(50)NOTNULL,apellidosVARCHAR(50)NOTNULL,cargoVARCHAR(50)NOTNULL,salarioINTNOTNULL);-- Insertar datos de ejemplo en la tabla:INSERTINTOempleados(nombre,apellidos,cargo,salario)VALUES('Juan','Pérez','Gerente',1350000),('María','Gómez','Asistente',800000),('Carlos','Rodríguez','Analista',680000),('Laura','Martínez','Coordinadora',660000),('Camilo','Hurtado','Técnico',500000),('Fernando','Peña','Técnico',500000),('Pedro','Sánchez','Técnico',500000);
COUNT
La función COUNT() se utiliza para contar la cantidad de filas que cumplen con una condición específica o para contar todas las filas en una tabla o columna.
Sintaxis Básica
1
SELECTCOUNT(column_name)FROMtable_name;
column_name: El nombre de la columna cuyo valor deseas contar. Si se pasa un (*), cuenta todas las filas, sin importar si tienen valores nulos o no.
Ejemplo: Contar todos los empleados
1
SELECTCOUNT(*)FROMempleados;
Ejemplo: Contar la cantidad de cargos en la empresa (sin duplicados)
1
2
SELECTCOUNT(DISTINCTcargo)AS"Cantidad de cargos"FROMempleados;
Ejemplo: Contar cantidad de empleados por cargos en la empresa
La función SUM() calcula la suma de los valores de una columna númerica en un conjunto de registros que cumplen con una condición específica (si se proporciona una). Es especialmente útil cuando se desea conocer el total acumulado de una columna.
Para ver los siguientes ejemplos, vamos a contar con una tabla ventas y registros:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-- Crear la tabla de VENTAS:CREATETABLEventas(id_ventaINTAUTO_INCREMENTPRIMARYKEY,productoVARCHAR(50),montoINT,fecha_ventaDATE);-- Insertar datos de ejemplo en la tabla:INSERTINTOventas(producto,monto,fecha_venta)VALUES('Producto A',20050,'2024-01-05'),('Producto B',35075,'2024-02-10'),('Producto A',15025,'2024-03-15'),('Producto C',50000,'2024-01-20'),('Producto B',20000,'2024-02-25'),('Producto A',40000,'2024-03-10'),('Producto C',250100,'2024-04-01');
SELECTfecha_venta,SUM(monto)AS"Total ventas por rango de fechas"FROMventasWHEREfecha_ventaBETWEEN'2024-01-01'AND'2024-03-31'GROUPBYfecha_venta;
AVG
La función AVG() es otra función de agregado muy útil, especialmente cuando necesitas obtener el promedio de los valores de una columna numérica. Es ideal para cálculos como el promedio de ventas, calificaciones, salarios, etc.
Ejemplo: Calcular el promedio total de ventas
1
2
SELECTAVG(monto)AS"Promedio Ventas"FROMventas;
Redondeo: Si deseas redondear el resultado a un número específico de decimales, puedes utilizarla función ROUND(). Por ejemplo, para redondear el promedio a dos decimalesROUND(AVG(monto), 2).
Ejemplo: Calcular el promedio de ventas para un producto específico