SQL - Dividir entradas en intervalos de tiempo

 
Vista:

Dividir entradas en intervalos de tiempo

Publicado por Antonio0416 (1 intervención) el 06/10/2016 20:45:54
hola a todos, me han recomendado este foro y espero que su experiencia me pueda ayudar

el punto es que necesito dividir por intervalos de tiempo (específicamente de 15 min) las entradas a una tienda, esto para poder generar un estadístico

tengo una base de datos que almacena la hora de cada entrada con el siguiente formato

Puerta --> Hora - In
A ----> 07:05:12
B ----> 09:10:25
B ----> 09:25:01
B ----> 09:29:50
A ----> 07:25:01
A ----> 07:13:59
B ----> 09:00:25

esta pequeña tabla me daría el siguiente resultado

Puerta A
de 07:00:00 - 07:14:59 = 2 entradas
de 07:15:00 - 07:29:59 = 1 entradas

Puerta B
de 09:00:00 - 09:14:59 = 2 entradas
de 09:15:00 - 09:29:59 = 2 entradas


un compañero me dice que con un "Case" puedo etiquetar a cada entrada y luego con un Group pero la verdad es que no e podido
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
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Dividir entradas en intervalos de tiempo

Publicado por Isaias (1921 intervenciones) el 06/10/2016 22:00:55
¿En que motor de base de 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
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Dividir entradas en intervalos de tiempo

Publicado por Isaias (1921 intervenciones) el 06/10/2016 22:43:12
Te dejo algo que desarrolle en SQL Server 2008 R2
1
2
3
4
5
6
7
8
9
10
11
12
declare @StartDate time
declare @EndDate time
select @StartDate = MIN(hora), @EndDate = MAX(hora) from #Entradas
 
SELECT Puerta,
  count(1) as Total
  ,DATEADD(MINUTE,(DATEPART(MINUTE, Hora) / 15)*15,(DATEADD(HOUR, DATEDIFF(HOUR, 0, Hora), 0))) as Hora
FROM #Entradas
WHERE
  hora BETWEEN @StartDate AND @EndDate
GROUP BY Puerta,
  DATEADD(MINUTE,(DATEPART(MINUTE, Hora) / 15)*15,(DATEADD(HOUR, DATEDIFF(HOUR, 0, Hora), 0)))

Resultado:

Puerta Total Hora
A 2 1900-01-01 07:00:00.000
A 1 1900-01-01 07:15:00.000
B 3 1900-01-01 09:00:00.000
B 1 1900-01-01 09:15:00.000
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

Dividir entradas en intervalos de tiempo

Publicado por antonio0416 (1 intervención) el 12/10/2016 18:23:22
muchas gracias por tu ayuda
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