Introducción a las Base de Datos 3 - (4-4)

Agrupaciones

Agrupación Group By

La agrupación es un concepto básico de Base de Datos, La cláusula GROUP BY, como su traducción lo indica, tiene como propósito agrupar información de acuerdo a un criterio en común. Por lo general se utiliza con funciones de agrupación o de agregación (COUNT, MIN, MAX, AVG, SUM)

Para este ejemplo vamos a usar la función SUM, que es una de las más comunes.

Id_venta Mes Nombre_Vendedor Pizas_Vendidas
1 Enero Hugo 10
2 Enero Debora 12
3 Enero Luis 21
4 Febrero Hugo 11
5 Febrero Hugo 7
6 Febrero Luis 13
7 Marzo Debora 22
8 Marzo Hugo 14
9 Marzo Luis 18


create table ventas (
Id_venta int identity (1,1) not null,
mes varchar(12) not null,
NombreVendedor varchar(255) not null,
Piezas_vendidas int)
insert into ventas values ('Enero', 'Hugo', 10)
insert into ventas values ('Enero', 'Debora', 12)
insert into ventas values ('Enero', 'Luis', 21)
insert into ventas values ('Febrero', 'Hugo', 11)
insert into ventas values ('Febrero', 'Hugo', 7)
insert into ventas values ('Febrero', 'Luis', 13)
insert into ventas values ('Marzo', 'Debora', 22)
insert into ventas values ('Marzo', 'Hugo', 14)
insert into ventas values ('Marzo', 'Luis', 18)

Supongamos que queremos obtener el número de piezas vendidas por cada vendedor, eso quiere decir que tendríamos que agrupar los registros por cada Vendedor:
Es decir, para HUGO tendrías que considerar los registros

Id_Venta Nombre_Vendedor Pizas_Vendidas
1 Hugo 10
4 Hugo 11
5 Hugo 7
8 Hugo 14

Total: 42

lo mismo para Debora y Luis:
Id_Venta Nombre_Vendedor Pizas_Vendidas
2 Debora 12
7 Debora 22

Total:34

Id_Venta Nombre_Vendedor Pizas_Vendidas
3 Luis 21
6 Luis 13
9 Luis 18


Total: 52

La función GROUP BY te permite hacer esto de manera automática. Observa que el ID es diferente en cada caso POR LO TANTO NO ES UN DATO COMÚN Y NO DEBERÍA CONSIDERARSE EN LA AGRUPACIÓN.

Código SQL:
SELECT vendedor, SUM(piezas_vendidas)
FROM tabla
GROUP BY vendedor;


Resultado
Nombre_Vendedor Piezas_vendidas
Hugo 42
Luis 52
Debora 34


El comportamiento de la función GROUP BY depende también de la función de agrupación que estés utilizando.
La cláusula HAVING permite hacer selecciones en situaciones en las que no es posible usar WHERE. Dado que se establece un criterio sobre un valor dado por una función de agrupamiento y no por valores de registros. Veamos un ejemplo completo
SELECT vendedor, SUM(piezas_vendidas)
FROM tabla
GROUP BY vendedor
HAVING sum(Piezas_Vendidas) > 40;

Resultado
Nombre_Vendedor Piezas_vendidas
Hugo 42
Luis 52


Podemos hacer agrupación con el campo Mes y obteniendo la suma o cualquier otra función de agrupamiento.
Ejemplo:

Código SQL:
SELECT mes, SUM(piezas_vendidas)
FROM tabla
GROUP BY mes;

Resultado
Mes Piezas_vendidas
Enero 43
Febrero 31
Marzo 54


Publicar un comentario

0 Comentarios