Access - Acces: Obtener el tiempo medio que sucede un registro con un atributo determinado

 
Vista:

Acces: Obtener el tiempo medio que sucede un registro con un atributo determinado

Publicado por BBBoard (3 intervenciones) el 26/03/2021 13:20:43
Hola a todos;

Estuve buscando por los foros y no encontré solución al problema que se me plantea. Si existe algún tema que plantee soluciones mil disculpas por no verlo y mil gracias si me respondéis con el enlace del tema.

Os comento:
Tengo una BBDD de dos tablas, la primera " Sesion" establece las condiciones de la toma datos y la segunda tabla (Sucesos) se guardan los atributos del suceso identificado en cada sesion. Los atributos de cada tabla son los siguintes:

Sesion= (Id(llave), fecha, presión, cobertura, altura, dirección)
Suceso=(ID(llave, sesion, hora, potencial, recorrido)

El lío me viene cuando quiero hacer una consulta de la media de tiempo que tarda un suceso concreto en repetirse para unas condiciones de sesión deterninadas, por ejemplo:

Tiempo medio de repetición de un suceso de potencial 5 para una sesión de presión x, cobertura y, altura z.

El lío lo tengo para calcular el tiempo que tarda un suceso de potencial 5 en repetirse, luego calcular su media.

¿Tendría que crear un campo nuevo automatizado que vaya calculando los tiempos de repetición de un suceso?
¿Habría que cambiar ese campo para que sea tipo doble y poder hacer medias? Es que con fecha me da valores muy raros.

Muchas gracias a todos por vuestro tiempo de antemano.
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

Acces: Obtener el tiempo medio que sucede un registro con un atributo determinado

Publicado por Anonimo (3316 intervenciones) el 26/03/2021 14:51:19
Para medir intervalos se precisan dos datos y si son fechas obtener ese dato en forma de numero que representara a la unidad a medir (sean años o segundos), para obtenerlo es util la función DateDiff.

Esta función nos devuelve el intervalo entre dos medidas en la 'unidad' que necesitemos (segundos, minutos ... dias, años ...)

Quizás (desde la distancia) incluiría un campo autonumerico, cuya única utilidad es crear un orden correlativo (no importa si se pierden números, basta con que mantengan el orden).

Se podrá utilizar la fecha u otro dato que cumpla esa característica, pero creo que es mas fácil para obtener:
..- el anterior entre iguales condicionando: el mayor de los menores que el actual
.. - el siguiente entre iguales condicionando: el menor de los mayores que el actual.
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

Acces: Obtener el tiempo medio que sucede un registro con un atributo determinado

Publicado por BBBoard (3 intervenciones) el 26/03/2021 16:41:30
Muchas gracias por la respuesta!

Me queda la duda de cómo hacer el tiempo medio de un suceso.
Consigo sacar la diferencia entre campos de tiempo, pero al hacer el promedio me dan resultados raros.

¿Habría que transformar unidades de esa variable?

Gracias!
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

Acces: Obtener el tiempo medio que sucede un registro con un atributo determinado

Publicado por Anonimo (3316 intervenciones) el 26/03/2021 20:36:41
No conociendo el entorno real, solo se pueden aportar ideas que serán útiles o ... tiempo perdido.

Quizás si se expone un calculo con su formula, el resultado obtenido y también el resultado que se espera (el mismo calculo 'a mano') se partirá de algo concreto.
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

Acces: Obtener el tiempo medio que sucede un registro con un atributo determinado

Publicado por BBBoard (3 intervenciones) el 28/03/2021 13:32:33
Pego a continuación datos de ejemplo.

Tabla Sucesos
Id-Sesion-Hora_in-Potencial
1 1 11:28:20 3
2 1 11:31:50 8
3 1 11:32:06 5
4 1 11:32:25 5
5 1 16:44:38 8
6 1 16:44:55 6
7 1 16:45:31 5
8 1 16:45:49 5
9 1 16:46:20 8
10 1 17:08:13 8
11 1 17:08:35 8

Consulta SQL:


SELECT Sucesos.Potencial, Avg(CDate(Nz([Hora_in]-DLast("Hora_in","Sucesos","Hora_in<#" & [Hora_in] & "#")))) AS Tiempo_m
FROM Sesion INNER JOIN Olas ON Sesion.Sesion = Sucesos.Sesion
GROUP BY Sucesos.Potencial;

Salida de la consulta:
Potencial Tiempo_m
3 0
5 2,57523148148156E-04
6 1,96759259259327E-04
8 4,70115740740741E-02



En esta salida me suceden dos cosas: la primera es que el tiempo medio me da valores muy raros y entiendo que es por el formato de tiempo de Access. Y la segunda, que no soy capaz de agrupar las diferencias de tiempo de dos registros de igual potencial, me esta calculando la diferencia de tiempo de un registro con su anterior.

Si alguien me puede iluminar, no salgo de este atasco.

Gracias por el tiempo dedicado!!!
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

Acces: Obtener el tiempo medio que sucede un registro con un atributo determinado

Publicado por jose (830 intervenciones) el 28/03/2021 15:35:01
hola
no entiendo muy bien tu problema que parece muy tecnico , pero si te dire dos cosas
uno
para ver el tiempo trancurrido desde un suceso a otro, no hay milagros
hay que ir recorriendo uno a uno los recordset de la consulta de los que reunan las condiciones buscadas
primero se lee el primer registro y se guarda el dato
segundo se lee el siguiente registro y se calula la diferencia y se guarda el dato
tercero se lee el siguiente y se compara con el anterior
y asi hasta el final de los datos del recordset

dos para la media
la media es la suma de todos los elementos dividida por el n umero de terminos.

luego esto implica que se guarden todos los datos obtenidos anteriormente y se haga luego una consulta agrupada que te de la media



vamos asi lo haria yo , habra otras soluciones pero no las conozco
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

Acces: Obtener el tiempo medio que sucede un registro con un atributo determinado

Publicado por Anonimo (3316 intervenciones) el 29/03/2021 16:09:25
La SQL necesita un poco de depuración para cumplir las condiciones.

No me parece adecuada la función DLast, pues esta busca el ultimo de un conjunto.
Cuando se intenta localizara un dato que es (en ese subconjunto de registros con la misma ID de sesión y el mismo potencial) que sea anterior o posterior a uno en concreto se utiliza DMax o DMin (que los ordena por el campo) y se compara con el de referencia.


Trabajar con el formato 'tiempo' (un numero complejo: años de 365,25 días, meses de longitud variable, días de 24 horas, horas de 60 minutos y minutos de 60 segundos) no es lo optimo
Lo adecuado es utilizar un valor numérico (y mejor entero) que se obtendría con la función DateDiff antes mencionada.

Tras los cálculos y obtención del dato promediado (por el método que se utilice) el resultado final -si se desea- se puede pasar a formato fecha.


Es normal que los resultados sean abstractos, parece que los datos no se trabajan correctamente ordenados y agrupados.
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