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 |
0 Comentarios