SQL Server

GROUP BY y COUNT en SQL Server: análisis de ventas con ejemplos reales y ejercicios

Publicado por J. Panduro hace 4 meses

GROUP BY y COUNT en SQL Server: análisis de ventas con ejemplos reales y ejercicios

Cuando trabajas con bases de datos empresariales, no basta con mostrar información: necesitas analizarla. Aquí es donde GROUP BY Y COUNT se vuelven herramientas fundamentales en SQL Server.


¿Qué hace GROUP BY?


La cláusula GROUP BY en SQL Server permite agrupar registros que tienen el mismo valor en una o varias columnas. Su principal objetivo es organizar los datos en grupos para poder realizar cálculos y análisis sobre cada conjunto de registros.


Esta cláusula suele utilizarse junto con funciones de agregación como COUNT(), SUM(), AVG(), MIN() y MAX(), permitiendo obtener información resumida a partir de grandes volúmenes de datos. Gracias a ello, es posible transformar miles de registros individuales en resultados más fáciles de interpretar y analizar.


  1. Por ejemplo, en una empresa se podría utilizar GROUP BY para conocer el total de ventas por vendedor, la cantidad de clientes por ciudad, el promedio de salarios por departamento o el número de pedidos realizados por cada cliente. Sin esta cláusula, sería necesario analizar cada registro individualmente, lo que dificultaría la obtención de información útil para la toma de decisiones.


¿Qué hace COUNT?


La función COUNT() en SQL Server se utiliza para contar registros dentro de una tabla o del resultado de una consulta. Es una de las funciones de agregación más utilizadas, ya que permite conocer rápidamente la cantidad de datos que cumplen una determinada condición.


Su principal objetivo es proporcionar información cuantitativa sobre los registros almacenados en la base de datos. Gracias a COUNT(), es posible obtener métricas y estadísticas que ayudan a analizar el estado y rendimiento de un sistema.


Por ejemplo, una empresa puede utilizar COUNT() para conocer cuántos clientes tiene registrados, cuántas ventas se realizaron durante un período determinado o cuántos pedidos fueron procesados en un día específico. Esta información es fundamental para la generación de reportes y la toma de decisiones.


La función COUNT() también suele combinarse con cláusulas como WHERE y GROUP BY, permitiendo realizar análisis más detallados sobre conjuntos específicos de datos. De esta manera, no solo es posible contar todos los registros de una tabla, sino también obtener cantidades agrupadas por categorías, departamentos, ciudades o cualquier otro criterio.


Ejemplos:

  1. Total de ventas
  2. Cantidad de clientes
  3. Número de pedidos


Dataset completo (copiar y ejecutar)


-- 1. Limpiar tablas
IF OBJECT_ID('Ventas', 'U') IS NOT NULL
DROP TABLE Ventas;

-- 2. Crear tabla
CREATE TABLE Ventas (
IdVenta INT IDENTITY(1,1) PRIMARY KEY,
Producto VARCHAR(100) NOT NULL,
Categoria VARCHAR(50) NOT NULL,
Cliente VARCHAR(100) NOT NULL,
Total DECIMAL(10,2) NOT NULL,
FechaVenta DATE NOT NULL
);

-- 3. Insertar datos
INSERT INTO Ventas (Producto, Categoria, Cliente, Total, FechaVenta)
VALUES
('Laptop', 'Tecnología', 'Juan Pérez', 2500.00, '2026-01-10'),
('Mouse', 'Tecnología', 'Ana López', 80.00, '2026-01-11'),
('Teclado', 'Tecnología', 'Juan Pérez', 150.00, '2026-01-12'),
('Monitor', 'Tecnología', 'Carlos Ruiz', 900.00, '2026-01-13'),
('Silla', 'Muebles', 'Ana López', 450.00, '2026-01-14'),
('Escritorio', 'Muebles', 'Juan Pérez', 700.00, '2026-01-15');



Contar registros con COUNT


SELECT COUNT(*) AS TotalVentas
FROM Ventas;

Cuenta todas las ventas registradas.


Agrupar ventas por categoría


SELECT
Categoria,
COUNT(*) AS CantidadVentas
FROM Ventas
GROUP BY Categoria;


Resultado esperado




¿Cómo funciona GROUP BY?


SQL agrupa filas que tienen el mismo valor.

En este caso:

  1. Junta todas las ventas de “Tecnología”
  2. Junta todas las ventas de “Muebles”

Luego COUNT cuenta cuántas hay en cada grupo.



Análisis de ventas con SUM


Muy usado en empresas


SELECT
Categoria,
SUM(Total) AS TotalVendido
FROM Ventas
GROUP BY Categoria;


Muestra cuánto dinero se vendió por categoría.


Ventas por cliente


SELECT
Cliente,
COUNT(*) AS CantidadCompras
FROM Ventas
GROUP BY Cliente;



Cliente que más compró


SELECT
Cliente,
SUM(Total) AS TotalGastado
FROM Ventas
GROUP BY Cliente
ORDER BY TotalGastado DESC;


Muy usado para rankings y reportes.


GROUP BY + WHERE


Puedes filtrar antes de agrupar.


SELECT
Categoria,
COUNT(*) AS Ventas
FROM Ventas
WHERE Total > 100
GROUP BY Categoria;


Solo cuenta ventas mayores a 100.


Error común en GROUP BY


❌ Incorrecto:


SELECT Categoria, Cliente
FROM Ventas
GROUP BY Categoria;


Error porque CLIENTE no está agrupado ni agregado.


Correcto


SELECT
Categoria,
COUNT(*) AS Total
FROM Ventas
GROUP BY Categoria;


EJERCICIOS


Nivel intermedio


Mostrar


  1. Categoría
  2. Cantidad de ventas


Solución


SELECT
Categoria,
COUNT(*) AS CantidadVentas
FROM Ventas
GROUP BY Categoria;


Nivel entrevista real


Obtener:

  1. Cliente
  2. Total gastado
  3. Ordenado del mayor al menor


Solución


SELECT
Cliente,
SUM(Total) AS TotalGastado
FROM Ventas
GROUP BY Cliente
ORDER BY TotalGastado DESC;


Ejercicio tipo empresa


Mostrar:

  1. Categoría
  2. Cantidad de ventas
  3. Total vendido
  4. Solo categorías con ventas mayores a 1000


Solución


SELECT
Categoria,
COUNT(*) AS CantidadVentas,
SUM(Total) AS TotalVendido
FROM Ventas
GROUP BY Categoria
HAVING SUM(Total) > 1000;


¿Qué es HAVING?


HAVING filtra grupos después del GROUP BY.


👉 Diferencia:


WHERE → filtra filas

HAVING → filtra grupos


Conclusión


Las cláusulas GROUP BY y la función COUNT() son herramientas fundamentales en SQL Server para transformar grandes volúmenes de datos en información útil y fácil de interpretar. Gracias a ellas, es posible agrupar registros, generar estadísticas y obtener métricas que ayudan a comprender mejor el comportamiento de un negocio o sistema.


A lo largo de este artículo aprendimos cómo utilizar estas herramientas para organizar datos y realizar conteos sobre distintos grupos de información. Aunque su sintaxis es sencilla, su aplicación en escenarios reales es enorme y constituye la base de muchos reportes empresariales y procesos de análisis de datos.


En el mundo profesional, GROUP BY y COUNT() son utilizados diariamente para responder preguntas como: ¿cuántas ventas se realizaron?, ¿qué categoría vende más?, ¿cuántos clientes tiene la empresa?, ¿qué vendedor obtuvo mejores resultados? y muchas otras consultas necesarias para la toma de decisiones.

Sobre el autor

J. Panduro es desarrollador de software y creador de HPanduDigital. Comparte contenido sobre Desarrollo Web, inteligencia artificial, y transformación digital, basado en experiencias reales y proyectos prácticos.

Buscar artículos

Escribe al menos 2 caracteres para buscar.