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!
No hay comentarios.:
Publicar un comentario