Sql server 在第1小时和第2小时之间,每隔15分钟从存档表中获取测量积分

Sql server 在第1小时和第2小时之间,每隔15分钟从存档表中获取测量积分,sql-server,tsql,Sql Server,Tsql,我有一个存档数据库和一个名为MeasurementArchive的表,其中包含3列名称、时间戳和度量。对于某些名称,每15分钟记录一次测量值,对于其他名称,每60分钟记录一次测量值。我想写一个查询(如果适用),它将以15分钟的间隔记录测量值,并返回记录这些测量值的小时的平均值。我只是不知道该怎么办 前 表格样本 Name, Time_stamp, Measurement x1, 01-01-2016 00:15:00, 2

我有一个存档数据库和一个名为MeasurementArchive的表,其中包含3列名称、时间戳和度量。对于某些名称,每15分钟记录一次测量值,对于其他名称,每60分钟记录一次测量值。我想写一个查询(如果适用),它将以15分钟的间隔记录测量值,并返回记录这些测量值的小时的平均值。我只是不知道该怎么办

表格样本

Name,        Time_stamp,             Measurement

x1,      01-01-2016 00:15:00,           2

x1,      01-01-2016 00:30:00,           4

x1,      01-01-2016 00:45:00,           5

x1,      01-01-2016 01:00:00,           3

x2,  ETC.......

我希望它在日期范围内每小时测量一次,并返回一个平均值。。希望你们能帮忙

这可以使用AVG功能完成。你只要按小时分组就可以得到平均值。但既然你也想要多天,我不确定你是想要每小时的平均值还是每天每小时的平均值。我这样做是为了得到每天每小时的平均值。如果您想要所有天数的平均值,只需将“选择和分组依据”更改为“日期部分(小时,时间戳)”


这可以使用AVG功能完成。你只要按小时分组就可以得到平均值。但既然你也想要多天,我不确定你是想要每小时的平均值还是每天每小时的平均值。我这样做是为了得到每天每小时的平均值。如果您想要所有天数的平均值,只需将“选择和分组依据”更改为“日期部分(小时,时间戳)”


谢谢你的工作!!谢谢你的工作!!
Name,        Time_stamp,             Measurement

x1,      01-01-2016 00:15:00,           2

x1,      01-01-2016 00:30:00,           4

x1,      01-01-2016 00:45:00,           5

x1,      01-01-2016 01:00:00,           3

x2,  ETC.......
create table MeasurementArchive
( 
    name char(2)
    , time_stamp datetime
    , Measurement int
)

insert MeasurementArchive(name, time_stamp, Measurement) values
('x1', '01-01-2016 00:15:00', 2),
('x1', '01-01-2016 00:30:00', 4),
('x1', '01-01-2016 00:45:00', 5),
('x1', '01-01-2016 01:00:00', 3)

select name
    , AvgMeasurement = AVG(Measurement * 1.0) --Need to multiple the int by 1.0 to force decimal places
    , MeasurementHour = dateadd(hour, DATEPART(hour, time_stamp), convert(datetime, (convert(date, time_stamp))))
from MeasurementArchive
group by name
    , dateadd(hour, DATEPART(hour, time_stamp), convert(datetime, (convert(date, time_stamp))))