Consulta entre rangos de horas...

Necesito construir una consulta que entregue la cantidad de ocurrencias que suceden entre rangos de horas dentro de un rango de días determinados. Por ejemplo, quiero saber las ocurrencias sucedidas entre el día 08-01-2003 y 08-31-2003, agrupadas entre las 00:00 y las 01:00, entre las 01:00 y las 02:00, entre las 02:00 y las 03:00,... Y entre las 23:00 y 00:00. Debería retornar algo similar a esto(solo como idea):
00:00 a 01:00 15348
01:00 a 02:00 10389
02:00 a 03:00 9930
.... .....
23:00 a 00:00 12000
El tipo de dato de la columna de fechas es "datetime" "mm-dd-aaaa hh:mm:ss"
¿Cómo puedo construir una consulta SQL que me entregue algo así, sin tener que hacer 24 querys con la instrucción BETWEEN?.
Muchos Saludos

4 Respuestas

Respuesta
1
Agrupamos por día, mes, año y hora y ya lo tenemos:
SELECT TO_DATE(TO_CHAR(FECHA,'YYYYMMDDHH24'),'YYYYMMDDHH24'), SUM(1) FROM PRUEBECITA
GROUP BY TO_DATE(TO_CHAR(FECHA,'YYYYMMDDHH24'),'YYYYMMDDHH24')
Esta consulta está hecha en Oracle, sólo tienes que adaptarla si fuera necesario.
Muchas gracias por tu molestia de escribir, pero ya he encontrado una solución. Debo utilizar la función DATEPART(hh, fecha), en SQL Server.
Un abrazo fraternal... Jaime
Respuesta
1
Ni modo!
Usas DECODE!
Ejemplo
Select
To_Char(Fecha,'DD/MM/YYYY') Dia,
Decode(
To_Char(fecha,'HH'),
'00','00:00 a 00:59',
'01','01:00 a 01:59',
'02','02:00 a 02:59',
'Etc') hora,
Count(*)
from ocurrencias
Where Fecha between x and y
Group by
To_Char(Fecha,'DD/MM/YYYY'),
Decode(
To_Char(fecha,'HH'),
'00','00:00 a 00:59',
'01','01:00 a 01:59',
'02','02:00 a 02:59',
'Etc');
Saludos.
Diego. ;)
PD. No te olvides de cerrar la pregunta.
Muchas gracias por tu molestia de escribir, pero ya he encontrado una solución. Debo utilizar la función DATEPART(hh, fecha).
Un abrazo fraternal... Jaime
Respuesta
1
Yo haría una consulta así
select hour(fecha), count(*)
from tabla
group by hour(fecha)
Entonces, esta consulta te va a devolver
1 15652
2 2453
3 56563
Con lo cual .. con 1 estarías agrupando a las que son de hora entre 01:00 y 02:00
Es una buena idea... aunque muchas gracias por tu molestia de escribir, pero ya he encontrado una solución. Debo utilizar la función DATEPART(hh, fecha).
Un abrazo fraternal... Jaime
Respuesta
Solo quiero saber si conoces la sentencia group by, si no es así, te doy la solución, si la conoces igual te puedo ayudar, pero quiero saber si la conoces
Muchas gracias por tu molestia de escribir, pero ya he encontrado una solución. Debo utilizar la función DATEPART(hh, fecha), en SQL Server.
Un abrazo fraternal... Jaime

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas