SQL - Agrupar Rango Fecha de 15 min

 
Vista:

Agrupar Rango Fecha de 15 min

Publicado por Juan (19 intervenciones) el 14/04/2007 20:06:23
Quisiera saber si se puede hacer un SQL en Access que me agrupe Fechas en un rango de X minutos, en este caso 15. Se utilizar datepart o format para agrupar en meses, horas, pero no para una consulta de este tipo.

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

RE:Agrupar Rango Fecha de 15 min

Publicado por Isaías (5072 intervenciones) el 16/04/2007 19:17:26
No se en access, pero debo suponer que trabaja igual que SQL SERVER al utilizar ANSI SQL.

CASE WHEN DATEPART(MI, GETDATE()) BETWEEN 1 AND 15 THEN '15'
WHEN DATEPART(MI, GETDATE()) BETWEEN 16 AND 15 THEN '30'

etc.
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

RE:Agrupar Rango Fecha de 15 min

Publicado por Juan (19 intervenciones) el 19/04/2007 02:30:24
Isaías,

El campo a agrupar se llama FECHA, intenté utilizarlo, no se si cometí un error pero no me anda.

Ver 1:
SELECT (CASE WHEN DATEPART(MI,FECHA) BETWEEN 0 AND 15 AS '15' END)
FROM Datos

Ver2:
SELECT (CASE WHEN DATEPART(MI,FECHA) BETWEEN 0 AND 15 THEN '15')
FROM Datos

Te puse estas dos veriones, porque algo así vi en otro post.

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

RE:Agrupar Rango Fecha de 15 min

Publicado por Juan (19 intervenciones) el 19/04/2007 02:57:04
Busqué en la Web y parece que Access no soporta la función CASE de SQL Server.
Habrá alguna otra manera de hacerlo?

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

RE:Agrupar Rango Fecha de 15 min

Publicado por Juan (19 intervenciones) el 19/04/2007 05:22:53
Logré resolverlo utilizando la función SWITCH. Lo que hice es aplicarle un format a la FECHA (FORMAT(FECHA,'DD-MM-YY HH:') y le enganche el SWITCH, con los rangos cada 15 min. Funciona muy bien

SELECT FORMAT(FECHA,'DD-MM-YY HH:') & SWITCH(DATEPART('N',FECHA) BETWEEN 0 AND 15,'00',DATEPART('N',FECHA) BETWEEN 16 AND 30,15,DATEPART('N',FECHA) BETWEEN 31 AND 45,30,DATEPART('N',FECHA) BETWEEN 46 AND 59,45) AS FECHA,ROUND(AVG(PESO)) AS PESO, ROUND(AVG(LARGO)) AS LARGO
FROM DATOS
GROUP BY FORMAT(FECHA,'DD-MM-YY HH:') & SWITCH(DATEPART('N',FECHA) BETWEEN 0 AND 15,'00',DATEPART('N',FECHA) BETWEEN 16 AND 30,15,DATEPART('N',FECHA) BETWEEN 31 AND 45,30,DATEPART('N',FECHA) BETWEEN 46 AND 59,45)

No será tan bonito como con el CASE pero es efectivo.

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

RE:Agrupar Rango Fecha de 15 min

Publicado por Isaías (5072 intervenciones) el 19/04/2007 18:24:41
Juan

Yo siempre he dicho, que entre mayores datos nos brinden, mejor sera nuestra opinion.

Por otro lado, solo al principio (huyyyy, creo que fue Access 2.0) utilice esta "base de escritorio", cuando conoci sql server 6.0, cambie radicalmente mi concepto con respecto a los MOTORES DE BASES DE DATOS TRANSACCIONALES.

Te sugiero que trates de "subirte" a un motor mucho mas robusto como SQL SERVER 2005 EXPRESS EDITION WITH ADVACED SERVICES.

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

RE:Agrupar Rango Fecha de 15 min

Publicado por Juan (19 intervenciones) el 20/04/2007 00:14:16
Isaías,

Estoy de acuerdo en lo que decís. Utilizo Access porque es el soft legal que tengo instalado en el trabajo. El área de sistemas es poco propensa a los programas nuevos. Por suerte lo utilizo como "base de escritorio", básicamente tengo bases de datos que las consultan otros mediante conexiones de red y los cuales realizan consultas de "selección" únicamente.

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

RE:Agrupar Rango Fecha de 15 min

Publicado por Juan (19 intervenciones) el 21/04/2007 04:21:14
Encontre otra forma de hacerlo, más simple o corta que la anterior:
Cambiando el "15" por otro numero te agrupa las fechas por el intervalo que uno quiera.
Convierto la fecha con un format hasta la HORA. Después con Datepart tomo los minutos, los divido por el RANGO a clasificar y saco el entero, al cual multiplico por el RANGO. Un poco más matemático, pero corto.

SELECT CDATE(FORMAT(FECHA,'DD-MM-YY HH:' & INT(DATEPART('N',FECHA)/15)*15)) AS FECHA
FROM DATOS
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