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

Acumular hasta una condicion

Estas en el tema de Acumular hasta una condicion en el foro de Mysql en Foros del Web. Hola como estan? Tengo un problema con un total acumulado por empleado. Necesito crear una consulta que me tire empleado, fecha, codremito, totalventa, cliente hasta ...
  #1 (permalink)  
Antiguo 09/06/2010, 07:26
mgd
 
Fecha de Ingreso: enero-2009
Mensajes: 129
Antigüedad: 15 años, 2 meses
Puntos: 0
Acumular hasta una condicion

Hola como estan?
Tengo un problema con un total acumulado por empleado.
Necesito crear una consulta que me tire empleado, fecha, codremito, totalventa, cliente hasta aca va todo bien pero como puedo hacer para que esta consulta tambien me acumule el total de las ventas por empleado, es decir la sumatoria del campo totalventa hasta que cambie de empleado y asi con todos.

La consulta que utilizao es esta:

Código SQL:
Ver original
  1. SELECT empleados.codempleado, empleados.nombre, ventas.fecha, remito.codremito,
  2.  ventas.importetotal totalventa, clientes.nombre cliente  
  3. FROM ventas INNER JOIN empleados ON empleados.codempleado = ventas.codempleado
  4.             INNER JOIN remito ON remito.codventa = ventas.codventa
  5.             INNER JOIN clientes ON clientes.codcli = ventas.codcli
  6. WHERE ventas.estado = 'ALTA' AND empleados.estado = 'ALTA'
  7.  AND ventas.fecha BETWEEN '20100101' AND '20100701'
  8.  ORDER BY empleados.nombre, ventas.fecha

Solo me faltaria esa sumatoria. Gracias por su ayuda
  #2 (permalink)  
Antiguo 09/06/2010, 07:53
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Acumular hasta una condicion

Hola mgd

En consultas grandes, es muy recomendable hacer uso de alias cortos para mejor entendimiento y estetica de la consulta.

Por otro lado, creo que eso lo puedes solucionar con ROLLUP.

Prueba esto y nos cuentas. Yo no lo he probado.

Código MySQL:
Ver original
  1. e.codempleado,
  2. e.nombre,
  3. v.fecha,
  4. r.codremito,
  5. c.nombre cliente,
  6. SUM(v.importetotal) totalventa
  7. FROM ventas v
  8. empleados e
  9. e.codempleado = v.codempleado
  10. remito r
  11. r.codventa = v.codventa
  12. clientes c
  13. c.codcli = v.codcli
  14. WHERE v.estado = 'ALTA'
  15. e.estado = 'ALTA'
  16. v.fecha
  17. BETWEEN '20100101' AND '20100701'
  18. GROUP BY e.codempleado WITH ROLLUP;
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 09/06/2010, 11:10
mgd
 
Fecha de Ingreso: enero-2009
Mensajes: 129
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Acumular hasta una condicion

Esta bien debo ser mas claro pero tu consulta no me resuelve el problema. Estuve leyendo sobre ROLLUP Y CUBE vi algunos ejemplos pero no puede implementarlos.
Lo que necesito es este resultado


MARIO GARCIA - CORONEL - 06/06/2010 - 36 - 125.00
MARIO GARCIA - CORONEL - 07/06/2010 - 39 - 125.00
MARIO GARCIA - CORONEL - 08/06/2010 - 40 - 125.00
TOTAL MARIANO GRACIA 375.00

ANALIA MORENO - LOPEZ - 06/06/2010 - 37 - 100.00
ANALIA MORENO - DE MARIAL - 07/06/2010 - 38 - 100.00
ANALIA MORENO - GUEMES - 08/06/2010 - 41 - 100.00
TOTAL ANALIA MORENO 300.00


El texto total mariano garcia obviamente no pero ese resultado es el que necesito
  #4 (permalink)  
Antiguo 09/06/2010, 12:18
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Acumular hasta una condicion

Lo que necesitas se puede hacer con ROLLUP. empieza haciendo pruebas simples, poniendo 1 o 2 campos y mira como funciona. Después vas implementando mas cosas para que te de los resultados que esperas.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: acumular
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 10:17.