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

Acomulado en mysql

Estas en el tema de Acomulado en mysql en el foro de Mysql en Foros del Web. hola como puedo hacerle para acomular valores es decir: tengo un campo A y un campo B, ejemplo campoA------campoB 10----------------10 15--------------- 25 20--------------- 35 25----------------60 ...
  #1 (permalink)  
Antiguo 23/01/2009, 15:38
Avatar de Zeptimo  
Fecha de Ingreso: enero-2008
Mensajes: 269
Antigüedad: 16 años, 3 meses
Puntos: 1
De acuerdo Acomulado en mysql

hola


como puedo hacerle para acomular valores es decir:

tengo un campo A y un campo B, ejemplo


campoA------campoB
10----------------10
15--------------- 25
20--------------- 35
25----------------60
30----------------90

como puedo hacerle para que en el campo B me quede como en el ejemplo ???

espero haberme explicado...


saludos............
  #2 (permalink)  
Antiguo 24/01/2009, 20:10
Avatar de jfl_freak  
Fecha de Ingreso: enero-2009
Ubicación: Guatemala
Mensajes: 96
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Acomulado en mysql

Con un par de subqueries y con la función SUM
  #3 (permalink)  
Antiguo 25/01/2009, 02:44
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Acomulado en mysql

Zeptimo,
Entiendo que va de menor a mayor en A, porque si no tendríamos que utilizar un id.
En realidad, no sé para qué quieres almacenar en un campo un dato que puede generarse.
Así podrías mostrarlo sin almacenarlo en ningún sitio:
Código sql:
Ver original
  1. SELECT t1.A, SUM( t2.A ) B
  2. FROM nombretabla t1
  3. INNER JOIN nombretabla t2 ON t1.A >= t2.A
  4. GROUP BY A
  5. ORDER BY A

Y así actualizar el dato para que lo cargue en un campo B

Código sql:
Ver original
  1. UPDATE nombretabla t0 INNER JOIN (SELECT t1.A dato, SUM( t2.A ) resultado
  2. FROM nombretabla t1
  3. INNER JOIN nombretabla t2 ON t1.A >= t2.A
  4. GROUP BY t1.A)t4 ON t0.A = t4.dato SET t0.B = t4.resultado

Postdata: te respondo por post, y no por mensaje privado (creo que es lo que corresponde en un foro). Saludos, Zeptimo.

Última edición por jurena; 26/01/2009 a las 00:33
  #4 (permalink)  
Antiguo 26/01/2009, 11:22
Avatar de Zeptimo  
Fecha de Ingreso: enero-2008
Mensajes: 269
Antigüedad: 16 años, 3 meses
Puntos: 1
De acuerdo Respuesta: Acomulado en mysql

mira no se si me explique lo que quiero es que los valores del campo a me los valla sumando en el campo b es decir:



si tengo en el campo A
45
10

en el campo b de beria de quedar asi:
45
55

pero no se si lo puedo hacer con en par de query's que me pusiste..


saludos............
  #5 (permalink)  
Antiguo 26/01/2009, 12:38
Avatar de Zeptimo  
Fecha de Ingreso: enero-2008
Mensajes: 269
Antigüedad: 16 años, 3 meses
Puntos: 1
De acuerdo Respuesta: Acomulado en mysql

oie crees que esto se puede aplicar en una tabla temporal. lo que pasa es que lo estoy realizando y me marca este error:

Can't reopen table: 'S1'

que puedo hacer????????

saludos........
  #6 (permalink)  
Antiguo 26/01/2009, 15:30
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Acomulado en mysql

Eso hace mi consulta o al menos eso me hace a mí en casa con mi MySQL; pero pon tu query para que veamos cómo has adaptado mi consulta, por si hay algún problema con los alias. Dinos qué campos tiene tu tabla... Tampoco sé cómo creas la tabla temporal y cómo introduces los datos.
  #7 (permalink)  
Antiguo 26/01/2009, 15:57
Avatar de Zeptimo  
Fecha de Ingreso: enero-2008
Mensajes: 269
Antigüedad: 16 años, 3 meses
Puntos: 1
De acuerdo Respuesta: Acomulado en mysql

esta un poco largo, esta dentro de un store:

TABLA--CAMPO--DESCRIPCION

MMAV--MAVHORAR --horaReal
MMAV--MAVCSUB--subidas
MMAV--MAVFECHAR--FechaReal
MMAV--MAVHORAR--HoraReal
MMAV--MAVNECO--NumeroEconomico
PRUEBA--PPASAJEROS-- Pasajeros
PRUEBA--PNUMUNIDADES-- NumeroDeUnidades
PRUEBA--PHORA-Hora
MOST--OSTNEC--NumeroEconomico
MOST--OSTFEC--Fecha
MOST--OSTHRRLIN--HoraInicial
MOST--OSTHRRLTR--HoraRealTerminada
MOST--OSTNUM--OrdenDeServicio

CREATE TEMPORARY TABLE SR(HORA INT,SUBIDASP INT,SubidasTotales INT,UNIDAD INT,Economico int);


INSERT INTO SR(HORA,SUBIDASP,SubidasTotales,UNIDAD,Economico)

SELECT A.MAVHORAR,C.PPASAJEROS,MAX(A.MAVCSUB)-MIN(A.MAVCSUB)AS RESTA,PNUMUNIDADES,B.OSTNEC
FROM MMAV A, MOST B,PRUEBA C
WHERE B.OSTRUTA = C.PRUTA AND
--------- A.MAVFECHAR = B.OSTFEC AND
--------- A.MAVNECO = B.OSTNEC AND
--------- B.OSTRUTA=pRuta AND
--------- B.OSTFEC=pFecha AND
--------- HOUR(A.MAVHORAR)=HOUR(C.PHORA) AND
--------- MAKETIME(HOUR(A.MAVHORAR),MINUTE(A.MAVHORAR) , 0) > MAKETIME(HOUR(B.OSTHRRLIN),MINUTE(B.OSTHRRLIN) , 0) AND --------A.MAVHORAR < B.OSTHRRLTR
GROUP BY B.OSTNUM,HOUR(A.MAVHORAR);


SELECT S1.HORA,S1.SUBIDASP,sum(S1.SubidasTotales),sum(S2. SubidasTotales)
--------- (CASE WHEN sum(S1.SubidasTotales) >= S1.SUBIDASP THEN 'OK' ELSE 'X' END)AS ESTADOSUB,S1.UNIDAD,
--------- COUNT(DISTINCT S1.Economico)as Total_Economicos,
--------- (case when COUNT(DISTINCT S1.Economico) = S1.UNIDAD THEN 'OK' ELSE 'X' END) AS ESTADOUNI
FROM SR S1 inner join SR S2 on sum(S1.SubidasTotales) >= sum(S2.SubidasTotales)

group by S1.HORA,SubidasTotales
ORDER BY SubidasTotales;

saludos

Última edición por Zeptimo; 26/01/2009 a las 16:02
  #8 (permalink)  
Antiguo 29/01/2009, 16:32
Avatar de Zeptimo  
Fecha de Ingreso: enero-2008
Mensajes: 269
Antigüedad: 16 años, 3 meses
Puntos: 1
De acuerdo Respuesta: Acomulado en mysql

alguien puede ayudarme???

ya tengo varios dias y nada.

busque en todo google y nada

saludos...............
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 03:59.