SQL : Manual Introducción al lenguaje de consultas parte 6 (GROUP BY - HAVING)
SQL : Manual Introducción al lenguaje de consultas parte 6 (Group by)
Objetivos :
- Agrupar la información utilizando la clausula GROUP BY.
- Usar la clausula HAVING
Las funciones de agrupación operan en conjuntos de filas para dar un resultado por grupo. Estas funciones son muy utilices para realizar análisis y investigaciones.
Las funciones de agrupación que podemos usar están :
- AVG
- COUNT
- MAX
- MIN
- SUM
La sintaxis basica de las funciones de agrupacion
SELECT COLUMNA1 , SUM(COLUMMNA2)
FROM TABLE
GROUP BY COLUMNA1
Nota : Podemos usar DISTINCT para que no se consideraren los datos duplicados.
Como agrupar la información?
En el capitulo anterior realizamos ejemplos con las funciones AVG, COUNT, MIN, MAX, SUM. Lo que vamos a ver es como agrupar esta información con los diferentes campos. El siguiente ejemplo es utilizando la base de datos del curso. Pueden descarga la base de datos de pruebas CursoSqlDB.rar y pueden acceder al capitulo anterior por medio de este enlace sql-manual-introducción-al-lenguaje-(Funciones)
En este ejemplo se va a mostrar la cantidad de productos agrupados por categoría.
select IDcategoria , count(*) Cantidad
from producto
GROUP BY IDcategoria
El resultado seria :
IDcategoria Cantidad
3 2
4 2
5 2
6 2
7 8
Lo que muestra es la cantidad de productos que tenemos por cada categoría. Usando este mismo ejemplo agregaremos el total en precio y el average por cada categoría.
select IDcategoria , count(*) Cantidad,
sum(Precio) Total , avg(precio) Average
from producto
GROUP BY IDcategoria
El resultado :
IDcategoria Cantidad Total Average
3 2 850.00 425.000000
4 2 550.00 275.000000
5 2 350.00 175.000000
6 2 7200.00 3600.000000
7 8 7900.00 987.500000
Vamos hacer otro ejemplo utilizando dos campos.
El query seria así :
select IDcategoria, IDProveedor , count(*) Cantidad,
sum(Precio) Total , avg(precio) Average
from producto
GROUP BY IDcategoria, IDProveedor
El resultado :
IDcategoria IDProveedor Cantidad Total Average
4 1 2 550.00 275.000000
5 1 2 350.00 175.000000
3 2 2 850.00 425.000000
6 2 2 7200.00 3600.00000
7 2 8 7900.00 987.500000
Usando HAVING
La clausula HAVING la podemos usar para filtrar información cuando estemos usando GROUP BY. Su uso es parecida a la de WHERE, con la diferencia que la utilizaremos junto con el GROUP BY y filtrar por medios de los campos con sus funciones de agrupación.
Ejemplo : Utilizando el query anterior vamos a filtrar la información en donde el total sea mayor a 1000.00
select IDcategoria, IDProveedor , count(*) Cantidad,
sum(Precio) Total , avg(precio) Average
from producto
GROUP BY IDcategoria, IDProveedor
HAVING sum(Precio) > 1000.00
El resultado :
IDcategoria IDProveedor Cantidad Total Average
6 2 2 7200.00 3600.00000
7 2 8 7900.00 987.500000
En este caso con la clausula HAVING limitamos la cantidad de registros. Podemos usar también otras funciones como count, min, max, Etc.
La técnica para usar las funciones de agrupamientos es saber como usar los campos por lo que deseamos agrupar, por cada campo que agrupemos podemos tener diversos resultados. Los campos que se agrupan son los campos que tienen funciones como (AVG, MIN, MAX, SUM) entre otras.
Los cursos anteriores pueden acceder por medio de los siguientes enlaces :
Primera semana :
Instalación y preparación de la base de datos
http://sqldevtools.blogspot.com/2014/07/sql-manual-introduccion-al-lenguaje-de.html
Teoría
http://sqldevtools.blogspot.com/2014/07/sql-primera-semana-parte-2.html
Segunda semana :
Uso de la sentencia select
http://sqldevtools.blogspot.com/2014/07/sql-manual-introduccion-al-lenguaje-de_27.html
Tercera semana
Clausula WHERE - ORDER BY
http://sqldevtools.blogspot.com/2014/08/sql-manual-introduccion-al-lenguaje-de.html
Cuarta semana
Funciones
Saludos, les dejo una nueva entrega del manual de introducción a SQL.
http://sqldevtools.blogspot.com/2014/08/sql-manual-introduccion-al-lenguaje-de_13.html
Hasta la próxima entrega.
Comentarios
Publicar un comentario