MySQL - Ayuda en consulta SQL

   
Vista:

Ayuda en consulta SQL

Publicado por Igorov (1 intervención) el 08/04/2011 10:22:04
Hola a todos, tengo una tabla q tiene los campos:
id: INT
fecha: DATETIME
tipo: ENUM('f','b','o')
cantidad: FLOAT

y lo q quiero es sacar a traves de una consulta lo siguiente:
hacer una sumatoria de las cantidades por cada mes, pero deben hacer dos sumatorias, una con los registros q son de tipo 'f' o 'b' y otra sumatoria con todos los registros, he logrado hacer una sumatoria de todos los registros por mes y por año con la siguiente consulta:

SELECT Year(gasto.fingreso) as `año`, Month(gasto.fingreso) as `Mes`, SUM(gasto.total) as `Suma de Totales`FROM gasto group by Year(gasto.fingreso), Month(gasto.fingreso)

Pero quiero q me bote 2 sumatorias, no solo una, falta la suma de las cantidades pero solo con los registros de tipo 'f' o 'b', pero tiene q ser en una sola consulta, les agradezco de antemano la respuesta.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Ayuda en consulta SQL

Publicado por xve (899 intervenciones) el 08/04/2011 11:26:38
Hola Igorov, no tengo una base de datos similar para realizar una copia, pero creo que seria algo asi:

De esta manera, te aparecerá el total por año, mes y tipo en varios registros...

SELECT Year(fingreso) as `año`, Month(fingreso) as `Mes`, tipo, SUM(*) as `Total`
FROM gasto
GROUP BY Year(fingreso), Month(fingreso), tipo

Espero que te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda en consulta SQL

Publicado por Leonardo Josué (81 intervenciones) el 13/04/2011 17:16:42
Hola Igorov:

Para el ejemplo voy a considerar que en tu tabla GASTO tienes más o menos la siguiente información:

id|fingreso|tipo|total
----------------------------------------
1|2011-02-01|f|10
2|2011-02-01|b|13
3|2011-02-01|o|12
4|2011-03-01|f|34
5|2011-03-01|b|10
6|2011-03-01|o|23
7|2011-03-01|o|76
8|2011-04-01|f|23
9|2011-04-01|b|45
10|2011-04-01|o|76
11|2011-04-01|o|19

Puedes hacer esto:

SELECT
Year(fingreso) as `año`,
Month(fingreso) as `Mes`,
SUM(total) as `Suma de Totales`,
SUM(CASE WHEN (tipo IN ('f', 'b')) THEN total ELSE 0 END ) `Suma de F y B`,
SUM(CASE WHEN (tipo = 'o') THEN total ELSE 0 END ) `Suma de O`
FROM gasto
GROUP BY Year(gasto.fingreso), Month(gasto.fingreso)

La consulta te regresaría los siguientes datos:

año|Mes|Suma de Totales|Suma de F y B|Suma de O
-----------------------------------------------------------------------------
2011|2|35|23|12
2011|3|143|44|99
2011|4|163|68|95

Como podrás observar la suma de las últimas columnas corresponde a la columna Suma de Totales.

Si esto no es lo que necesitas, te pediría que nos dieras algunos datos de ejemplo y qué esperas de salida, para poder hacer algunas pruebas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar