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)


Funciones de agrupación

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

Entradas populares de este blog

SQL SERVER : Obtener Objeto Última Fecha de modificación de una tabla

MetroFramework : Aplicaciones de escritorio al estilo metro

Que es LOCALDB?