martes, 2 de febrero de 2016

Group By, Having y su funcion agregada SUM en SQL Server

Buenos días queridos lectores, espero estén bien y tengan una excelente semana, la semana empezó en martes por el feriado del 5 de febrero, pero ya estamos de vuelta. El día de hoy veremos como usar el Group By, el Having y las funciones agregadas, SUM, COUNT, MAX, MIN y AVG, pasaremos a los ejemplos y a una breve explicación de cada sentencia. Empecemos pues:


Para recuperar información agrupada por algún criterio se debe implementar la clausula GROUP BY dentro de la consulta SELECT

El GROUP BY agrupa un conjunto de registros de acuerdo a los valores de una o mas columnas de una tabla. Para una mejor interpretación de las columnas agrupadas se pueden usar las funciones agregadas como SUM, COUNT, MAX. MIN y AVG. Pero pasemos directamente a los ejemplos:

Ejemplo 1:
Script que permita mostrar los IDPAIS agrupados desde la tabla PASAJERO utilizando la clausula GROUP BY

SELECT P.IDPAIS
       FROM PASAJERO P
       GROUP BY P.IDPAIS

GO

El script muestra los codigos de los paises registrados en la tabla PASAJERO, hay que tener en cuenta que dicho listado no repetirá los IDPAIS ya que se encuentran agrupados. Como se muestra en la imagen








Funciones Agregadas

SUM

La clausula SUM permite devolver la suma de todos los valores distinguidos en una determinada expresión. Esta función solo puede usarse con columnas de tipo numérico. Pero para una mayor comprensión veamos otro ejemplo:

Ejemplo 2:
Script que permita mostrar el acumulado de los montos registrados en la tabla PAGO



SELECT SUM(MONTO) AS [TOTAL MONTO]
       FROM PAGO
GO

En el script se implementa la función SUM de la columna MONTO que permite acumular los montos sin restricciones, tal como muestra el resultado en la imagen:



Si modificamos el caso y nos proponemos a determinar el acumulado de los montos, pero de un determinado año ingresado por el usuario, el script sería como sigue:

DECLARE @AÑO INT=2011

SELECT SUM(MONTO) AS [TOTAL MONTO]
       FROM PAGO
       WHERE YEAR(FECHA)=@AÑO
GO

En este script se adiciona la clausula WHERE para poder condicionar el acumulado, es decir, sumará todos los montos solo si el año es igual a la variable @AÑO



Ejemplo 3:
Script que permita mostrar el acumulado de los montos registrados en la tabla PAGO por cada año, considere el año de la columna Fecha. Use la función agregada SUM y la cláusula GROUP BY.



SELECT YEAR(FECHA) AS [AÑO], SUM(MONTO) AS [TOTAL MONTO]
       FROM PAGO
       GROUP BY YEAR(FECHA)
GO

En el Script se está agrupando los registros de la tabla PAGO desde la columna FECHA. Para el caso se solicita los montos acumulados por años, para lograr esto, debemos agrupar dichas fichas por años con la cláusula GROUP BY YEAR(FECHA). Las columnas definidas en la consulta son dos, la primera mostrará los años agrupados y el segundo mostrará el monto acumulado según el orden de agrupamiento, es decir, por años. El resultado se muestra en la siguiente imagen:


Al mismo caso podríamos añadirle la columna año, mes y el acumulado según éstos dos criterios, el script sería de la siguiente manera:

SELECT YEAR(FECHA) AS [AÑO], MONTH(FECHA) AS [MES], SUM(MONTO) AS [ACUMULADO]
       FROM PAGO
       GROUP BY YEAR(FECHA), MONTH(FECHA)
GO

El resultado del script quedaría como sigue:


Como notará existe un quiebre entre un año y sus meses, eso quiere decir que el monto acumulado en consecuencia del agrupamiento entre un determinado mes y un año. Por ejemplo en el año 2012 se muestra el acumulado de los meses Enero, Febrero, Abril y Agosto, gracias a la agrupación GROUP BY YEAR(FECHA), MONTH (FECHA)

Hasta aquí el post queridos lectores, pero falta más en la clausula GROUP BY que seguiremos viendo en los siguientes post. Espero compartan, den +1, comenten o den clic en algún anuncio que les interese. Un abrazo

¡Saludos!

Banderas de Visitantes

Flag Counter