martes, 15 de mayo de 2007

Función de agrupación Group and agregación Sum en SQL

Las funciones de agrupación y agregación operan sobre conjuntos de filas para dar un resultado por grupo.

GROUP BY permite agrupar informacion por columnasSUM suma los valores

Mediante la clausula GROUP BY se dividen las filas que devuelve una consulta en pequeños grupos. Cuando hagamos uso de esta clausula hay que tener en cuenta que todas las columnas que pongamos en el SELECT y que NO estén en la cláusula GROUP BY, deberán estar en una función de agrupación.

==INCORRECTO==
SELECT FECHA, MONTOFROM INGRESOS
GROUP BY FECHA

==CORRECTO==
SELECT FECHA, SUM (MONTO)
FROM INGRESOS
GROUP BY FECHA

A Continuación un ejemplo de como podemos obtener los ingresos generados por cada uno de los conceptos correspondientes a cada dia.


================================================
==TABLA INGRESOS==
FECHA CONCEPTOID NOMBRE MONTO
2/16/2007 9 DONATIVOS 1000.00
2/28/2007 4 VENTAS 100.00
2/22/2007 9 DONATIVOS 120.00
2/22/2007 9 DONATIVOS 250.00
2/22/2007 4 VENTAS 100.00
2/23/2007 9 DONATIVOS 120.00

================================================
==SENTENCIA==
SELECT FECHA, CONCEPTOID, NOMBRE, SUM(MONTO)
FROM INGRESOS
GROUP BY FECHA, CONCEPTOID, NOMBRE
ORDER BY FECHA

==RESULTADO==
FECHA CONCEPTOID NOMBRE MONTO
2/16/2007 9 DONATIVOS 1000.00
2/22/2007 4 VENTAS 100.00
2/22/2007 9 DONATIVOS 370.00
2/23/2007 9 DONATIVOS 120.00
2/28/2007 4 VENTAS 100.00

Como podemos observar para este caso sencillo, habia dos ingresos por concepto de DONATIVOS en una misma fecha 2/22/2007, y en nuestra consulta se suman ambos registros mediante el uso de la agrupación y agregación.