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

Busqueda por intervalos cada x minutos dentro de una fecha dada

Estas en el tema de Busqueda por intervalos cada x minutos dentro de una fecha dada en el foro de Mysql en Foros del Web. Soy el que pregunto aqui-> http://www.forosdelweb.com/f86/selec...rvalos-771936/ y me recomendaron hacer de nuevo la pregunta. Esta vez tengo una tabla, 3 campos (id, temperatura,fecha) y debo ...
  #1 (permalink)  
Antiguo 03/02/2010, 09:47
Avatar de el_gustavo  
Fecha de Ingreso: mayo-2009
Mensajes: 117
Antigüedad: 10 años, 8 meses
Puntos: 0
Busqueda por intervalos cada x minutos dentro de una fecha dada

Soy el que pregunto aqui->http://www.forosdelweb.com/f86/selec...rvalos-771936/ y me recomendaron hacer de nuevo la pregunta.

Esta vez tengo una tabla, 3 campos (id, temperatura,fecha) y debo hacer una consulta para hacer un grafico, entre ocho horas.
Si yo hago
Código:
 SELECT AVG( temperatura ) Temperatura
FROM `tabla`
WHERE fecha >=1248836400
AND fecha <=1248865200

LIMIT 0 , 30
obtengo el promedio de las temperatura en ese intervalo de tiempo.
Ahora, yo a esta misma temperatura la quiero por intervalo de 15 minutos, igual que lo que escribo en el otro post, en vez de hacer las 32 consultas me gustaria que saliera en una sola.
Buscando la solucion hice algo como esto, que agrupa por horas
Código:
 SELECT DATE( FROM_UNIXTIME( fecha ) ) Dias, AVG( temperatura ) Temperatura
FROM `tabla`
WHERE Fecha >=1248836400
AND fecha <=1248865200
GROUP BY HOUR( FROM_UNIXTIME( fecha) )
ORDER BY `Dias` ASC
LIMIT 0 , 30
Me devuelve 9 resultados, que esta mal, la fecha primera corresponde al 29 de julio de 2009 a las 3 am GMT y la segunda a las 11.
Como podria hacerse, pero que agrupe resultados cada 10 minutos o cada x minutos o cada x hora??
En la tabla fecha ese es otro problema, yo recibo datos desde una estacion meteorologica en intervalos de cada 300 segundos (aunque por ahi no es seguro)

Gracias por la ayuda.
  #2 (permalink)  
Antiguo 03/02/2010, 10:18
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 11 años
Puntos: 360
Respuesta: Busqueda por intervalos cada x minutos dentro de una fecha dada

Mira este post. Creo que te puede servir. Se hacen agrupaciones cada 30 minutos.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 03/02/2010, 13:03
Avatar de el_gustavo  
Fecha de Ingreso: mayo-2009
Mensajes: 117
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Busqueda por intervalos cada x minutos dentro de una fecha dada

Lo voy a tener que leer atentamente, parece interesante y hasta es el mismo problema que el mio (aunque el de el es mas complicado)
Yo tendria que hacer algo parecido a esto.
Código:
GROUP BY ((60/periodMinutes) * HOUR( thistime ) + FLOOR( MINUTE( thistime ) / periodMinutes ))
where thistime is the TIME column and periodMinutes is the period length in minutes
pero mi campo thistime es de tipo entero (Los segundos desde 1970 hasta la fecha) asi que calculo tendre que hacer algo como...
Código:
GROUP BY ((60/periodMinutes) * HOUR( DATETIME(thistime) ) + FLOOR( MINUTE( DATETIME(thistime) ) / periodMinutes ))
Es posible que haya escrito una burrada aca nomás arriba pero me parece que seria asi, mas tarde lo voy a ver con mas detenimiento.

A esa consulta la encontre aqui->http://www.forosdelweb.com/f86/agrup...inutos-595591/

Última edición por el_gustavo; 03/02/2010 a las 13:04 Razón: me faltaba incluir un enlace
  #4 (permalink)  
Antiguo 03/02/2010, 17:18
Avatar de el_gustavo  
Fecha de Ingreso: mayo-2009
Mensajes: 117
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Busqueda por intervalos cada x minutos dentro de una fecha dada

Bueno, creo que solucione el tema pero me parece que le faltaria una revision de mi parte, cualquier cosa pregunto de nuevo =)

Como yo guardo los tiempos en horas unix le hice un cambio a la consulta y el resultado fue:
Código:
SELECT AVG( Temperatura ) Temperatura, Fecha
FROM `tabla`
WHERE FechaHora >=1230786000
AND FechaHora <1230814800

GROUP BY (
( 60 /30 ) * HOUR( FROM_UNIXTIME( Fecha ) ) + FLOOR( MINUTE( FROM_UNIXTIME( Fecha ) ) /30 )
)
LIMIT 0 , 30
Supongo que se comporta como debe ser, si algun erudito me confirma muy agradecido estare =)
El otro error que cometia era usar between y no tenia en cuenta que la "fecha final" tambien pertenece a una nueva media hora (Espero haber sido claro).

Gente, muchas gracias y espero que me corrigan si le parece una burrez la consulta.

Aunque como todo, esta forma tiene un problema, que pasa si busco entre las 5:20 y las 8:20?? Lo que estoy viendo que hace es devolver en un registro los registros entre las 5:20 y 5:30 y despues hace normal, me parece que ahi me tocaria a mi hacer el procesamiento?

Última edición por el_gustavo; 03/02/2010 a las 17:33 Razón: Faltaba una aclaracion.
  #5 (permalink)  
Antiguo 03/02/2010, 18:53
Avatar de el_gustavo  
Fecha de Ingreso: mayo-2009
Mensajes: 117
Antigüedad: 10 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Busqueda por intervalos cada x minutos dentro de una fecha dada

Perdon! Me falto un detalle que acabo de descubrir y que la verdad no entiendo =(
Vi en el post que me recomendo Huesos52 que incluye aquellos registros que devuelven null, como puedo hacerlo en base a la consulta que estoy armando?

Etiquetas: intervalos, minutos, fechas, busquedas
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 13:27.