рассчитать среднее значение за определенный промежуток времени - PullRequest
0 голосов
/ 11 марта 2019

У меня есть таблица, в которой значения записываются каждые 30 минут Я хочу рассчитать среднее значение за определенный период времени за несколько дней.

CREATE TABLE [dbo].[#TABLE_1](
[numreq] [int] NULL,
[rangetime] [nvarchar](300) NULL
) ON [PRIMARY]

insert into [dbo].[#TABLE_1] values('2','2019-03-10 12:00:00.000')
insert into [dbo].[#TABLE_1] values('3','2019-03-10 12:30:00.000')
insert into [dbo].[#TABLE_1] values('4','2019-03-10 13:00:00.000')
insert into [dbo].[#TABLE_1] values('5','2019-03-10 13:30:00.000')
insert into [dbo].[#TABLE_1] values('6','2019-03-11 12:00:00.000')
insert into [dbo].[#TABLE_1] values('7','2019-03-11 12:30:00.000')
insert into [dbo].[#TABLE_1] values('8','2019-03-11 13:00:00.000')
insert into [dbo].[#TABLE_1] values('9','2019-03-11 13:30:00.000')

Я написал SQL-запрос, но он не дает желаемого результата

select avg([numreq]),[rangetime]
from [dbo].[#TABLE_1]
group by [rangetime]

Результат, который я хочу получить:

numreq	rangetime
4		12:00
5		12:30
6		13:00
7		13:30

1 Ответ

1 голос
/ 11 марта 2019

Вы можете использовать cast() для анализа только времени:

select avg(numreq), cast(rangetime as time) as rangetime
from [#TABLE_1]  t
group by cast(rangetime as time);

Если rangetime не имеет желаемого типа, тогда вы можете использовать substring():

substring(rangetime, 12, len(rangetime))
...