Access - Operacion con registros anteriores y actuales

 
Vista:
sin imagen de perfil
Val: 14
Ha aumentado su posición en 8 puestos en Access (en relación al último mes)
Gráfica de Access

Operacion con registros anteriores y actuales

Publicado por Daniel (8 intervenciones) el 15/10/2019 13:54:28
Hola, buenos días. Estoy atascado con una consulta de Access.

Tengo una tabla que me da el numero de sesión junto con la Carga de entrenamiento y quiero hacer esta operación que he conseguido con Excel para calcular un nuevo campo calculado que seria el EWMA crónico con la siguiente operación:

calculado

Se puede conseguir esto mediante una consulta? o mediante otra forma?

Que expresión tendría que poner en el campo calculado para que sea igual que la formula del excel (Que me obtenga el dato del registro anterior para operar con un dato del registro actual.)

Mucha gracias!
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
sin imagen de perfil
Val: 14
Ha aumentado su posición en 8 puestos en Access (en relación al último mes)
Gráfica de Access

Operacion con registros anteriores y actuales

Publicado por Daniel (8 intervenciones) el 15/10/2019 14:41:02
La fórmula para el primer registro lo tengo pero como creo una consulta con un campo calculado que me coja el dato del anterior registro? Esta sería la fórmula de excel: =B3*(2/(28+1))+((1-(2/(28+1)))*C2)


calculado1
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
Imágen de perfil de Francisco
Val: 467
Plata
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Operacion con registros anteriores y actuales

Publicado por Francisco (212 intervenciones) el 15/10/2019 15:49:06
Hola


Solo te muestro el resultado anterior, lo demas es ajustar la sentencia para las formulaciones etc

1
2
3
4
5
6
SELECT
     sesion,
     carga,
     ewma,
     (SELECT ewma FROM mi_tabla T2 WHERE t2.sesion = (t1.sesion - 1)) ewma_anterior
FROM mi_tabla T1

Saludos
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
sin imagen de perfil
Val: 14
Ha aumentado su posición en 8 puestos en Access (en relación al último mes)
Gráfica de Access

Operacion con registros anteriores y actuales

Publicado por Daniel (8 intervenciones) el 15/10/2019 18:04:50
No consigo hacerlo, a que te refieres?
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
Imágen de perfil de Francisco
Val: 467
Plata
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Operacion con registros anteriores y actuales

Publicado por Francisco (212 intervenciones) el 15/10/2019 18:15:54
Para tomar el valor anterior tienes que ir a la sesion anterior

Mas o menos asi

1
2
3
4
5
SELECT
*,
carga*(2/(28+1))+((1-(2/(28+1)))*(SELECT ewma FROM mi_tabla T2 WHERE t2.sesion = (t1.sesion - 1)))
FROM mi_tabla T1
WHERE sesion > 1

Saludos
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
sin imagen de perfil
Val: 14
Ha aumentado su posición en 8 puestos en Access (en relación al último mes)
Gráfica de Access

Operacion con registros anteriores y actuales

Publicado por Daniel (8 intervenciones) el 15/10/2019 19:29:58
Buenas Francisco, lo primero agradecerte el tiempo que me dedicas, te adjunto la BBDD, he intentado hacerlo de tu manera y de otra manera pero ambas no me salen.

Te adjunto la BBDD por si tu ves solución a este problema.

Muchas gracias por tu tiempo!
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
Imágen de perfil de Francisco
Val: 467
Plata
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Operacion con registros anteriores y actuales

Publicado por Francisco (212 intervenciones) el 16/10/2019 05:10:08
Hola

La solucion

1
2
3
4
5
6
7
8
9
SELECT S1.id, S1.Sesion, S1.Carga, S1.EWMA FROM Sesiones AS S1 WHERE S1.id=1
UNION ALL
SELECT
S1.id,
S1.Sesion,
S1.Carga,
S1.Carga * ( 2 / ( 28 + 1 ) ) + ( 1 - ( 2 / ( 28+1 ) ) ) * ( SELECT ewma FROM Sesiones AS S2 WHERE S2.id = ( S1.id - 1 ) ) AS EWMA
FROM Sesiones AS S1
WHERE S1.id > 1;

Saludos
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