Las funciones de agregado en SQL Server son herramientas esenciales para realizar cálculos sobre conjuntos de datos, permitiendo resumir información y obtener métricas valiosas para la toma de decisiones.

Funciones Básicas de Agregado

COUNT()

Cuenta el número de filas o valores no nulos en un conjunto de datos.

SELECT COUNT(*) AS TotalClientes
FROM Clientes;

SELECT COUNT(Email) AS ClientesConEmail
FROM Clientes;
Caso de uso:

Determinar cuántos clientes tienen información de contacto completa para una campaña de marketing.

SUM()

Calcula la suma total de los valores en una columna numérica.

SELECT SUM(Ventas) AS VentasTotales
FROM Pedidos
WHERE YEAR(Fecha) = 2023;
Caso de uso:

Calcular los ingresos totales generados en el último trimestre para el reporte financiero.

AVG()

Calcula el valor promedio de una columna numérica, ignorando valores NULL.

SELECT AVG(Precio) AS PrecioPromedio
FROM Productos
WHERE CategoriaID = 5;
Caso de uso:

Determinar el ticket promedio de compra por cliente para ajustar estrategias de precios.

Funciones Avanzadas de Agregado

MAX()

Devuelve el valor máximo de una columna.

SELECT MAX(FechaNacimiento) AS ClienteMasJoven
FROM Clientes;

MIN()

Devuelve el valor mínimo de una columna.

SELECT MIN(Precio) AS ProductoMasBarato
FROM Productos;

Agrupación de Datos con GROUP BY

Las funciones de agregado muestran todo su potencial cuando se combinan con la cláusula GROUP BY, permitiendo agrupar resultados por categorías.

-- Ventas totales por categoría de producto
SELECT CategoriaID, SUM(Ventas) AS VentasTotales
FROM Productos
GROUP BY CategoriaID
ORDER BY VentasTotales DESC;
-- Número de pedidos por cliente y año
SELECT ClienteID, YEAR(Fecha) AS Año, COUNT(*) AS TotalPedidos
FROM Pedidos
GROUP BY ClienteID, YEAR(Fecha)
HAVING COUNT(*) > 5;

Buenas Prácticas

  • Utiliza COUNT(1) en lugar de COUNT(*) para mejor rendimiento en tablas grandes
  • Considera el uso de FILTER o WHERE para excluir valores nulos antes de aplicar agregaciones
  • Para promedios, ten en cuenta cómo los valores nulos pueden afectar tus resultados
  • Usa GROUP BY junto con HAVING para filtrar resultados agregados
  • Considera el uso de índices en columnas frecuentemente usadas en cláusulas GROUP BY