Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta suma de valores mas neto segun signo

Estas en el tema de Consulta suma de valores mas neto segun signo en el foro de Mysql en Foros del Web. Hola tengo una base de datos la cual no puedo modificar, tiene los siguiente campos ticket - numero transaccion login - login usuario profit - ...
  #1 (permalink)  
Antiguo 31/03/2009, 09:32
 
Fecha de Ingreso: marzo-2009
Mensajes: 18
Antigüedad: 15 años, 1 mes
Puntos: 0
Consulta suma de valores mas neto segun signo

Hola


tengo una base de datos la cual no puedo modificar, tiene los siguiente campos

ticket - numero transaccion
login - login usuario
profit - ganacia o perdida del usuario (puede ser un numero + o -)


ticket login profit
(2121) (20) (10000)
(2122) (20) (15000)
(2123) (20) (-15000)


y necesito sumar en distintos campos el total de ganancias con perdidas mas su neto


SELECT login, if (profit < 0, sum(profit), '' ) as perdida, if (profit > 0, sum(profit), '' ) as ganancia FROM `tabla` where login = 20;

pero me retorna solo el primero campo.


login perdida ganancia
(20) (10000) ()



necesito que me retorne algo como lo siguiente, una sumatoria de todas las perdidas, junto con todas las ganancias y que me genere un neto con la suma de estos dos valores, algo asi.

login perdida ganancia neto
(20) (-15000) (250000) (10000)



alguien me podria guiar como hacerlo por favor.


saludos.
  #2 (permalink)  
Antiguo 31/03/2009, 11:08
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta suma de valores mas neto segun signo

SELECT sum(if (profit < 0,profit,0)) perdida, sum(if (profit > 0, profit,0)) ganancia, (sum(if (profit > 0, profit,0))+ sum(if (profit < 0,profit,0))) neto FROM `tabla` where login = 20

Observa que he puesto + para sumar los SUM de positivo y negativo; eso equivale a una resta, que es lo que quieres. No te he puesto group by login al final, pues en tu caso no es necesario, pero si quieres obtener los de todos los login, quitas where login=20 y añades al final group by login.

Pero si necesitas traerte también el login en la consulta, debes hacerlo así:
SELECT login, sum(if (profit < 0,profit,0)) perdida, sum(if (profit > 0, profit,0)) ganancia, (sum(if (profit > 0, profit,0))+ sum(if (profit < 0,profit,0))) neto FROM `tabla` where login = 20 group by login

Última edición por jurena; 31/03/2009 a las 11:16
  #3 (permalink)  
Antiguo 17/05/2009, 21:41
 
Fecha de Ingreso: marzo-2009
Mensajes: 18
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Consulta suma de valores mas neto segun signo

muchas gracias.

me ha servido.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:17.