SQL Server: promedio de horas y minutos

En SQL Server, tengo una columna de hora de inicio en una tabla como:

2011-09-18 08:06:36.000
2011-09-19 05:42:16.000
2011-09-20 08:02:26.000
2011-09-21 08:37:24.000
2011-09-22 08:22:20.000
2011-09-23 11:58:27.000
2011-09-24 09:00:48.000
2011-09-25 06:51:34.000
2011-09-26 06:09:05.000
2011-09-27 08:25:26.000
...

Mi pregunta es, ¿cómo puedo obtener el promedio de horas y minutos? Quiero saber cuál es la hora promedio de inicio de este trabajo. (por ejemplo 07:22)

Intenté algo como esto pero no funcionó:

select CAST(AVG(CAST(DATEPART(HH, START_TIME)AS float)) AS datetime) FROM

Gracias.

preguntado el 27 de septiembre de 11 a las 08:09

2 Respuestas

declare @T table(StartTime datetime)

insert into @T values
('2011-09-18 08:06:36.000'),
('2011-09-19 05:42:16.000'),
('2011-09-20 08:02:26.000'),
('2011-09-21 08:37:24.000'),
('2011-09-22 08:22:20.000'),
('2011-09-23 11:58:27.000'),
('2011-09-24 09:00:48.000'),
('2011-09-25 06:51:34.000'),
('2011-09-26 06:09:05.000'),
('2011-09-27 08:25:26.000')

;with C(Sec) as
(
  select dateadd(second, avg(datediff(second, dateadd(day, datediff(day, 0, StartTime), 0), StartTime)), 0)
  from @T
)
select convert(char(5), dateadd(minute, case when datepart(second, C.Sec) >= 30 then 1 else 0 end, C.Sec), 108)
from C
-----
08:08

Respondido el 27 de Septiembre de 11 a las 13:09

Pruebe lo siguiente:

select  CAST((SUM(DATEPART(HH, START_TIME) * 60 + DATEPART(MI, START_TIME))/COUNT(*))/60 AS VARCHAR(10)) + ':' + CAST((SUM(DATEPART(HH, START_TIME) * 60 + DATEPART(MI, START_TIME))/COUNT(*))%60 AS VARCHAR(10)) 
FROM.....

Respondido el 27 de Septiembre de 11 a las 12:09

esta solución y la anterior dieron los resultados con 1 minuto de diferencia. pero no es un problema. esto también funciona. gracias... - Mehmet

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.