我有一系列表格,其中包含从各种设备收集的大量高精度数据。收集它们的时间间隔各不相同,甚至在时间序列中徘徊。我的用户希望能够选择日期范围并以特定频率获得这些变量的平均值/最小值/最大值。这是我对此进行的第二次尝试,它有效,但我想知道是否有更好/更快的方法来实现这一目标?
declare @start datetime
declare @end datetime
set @start = '3/1/2012'
set @end = '3/3/2012'
declare @interval int
set @interval = 300
declare @tpart table(
dt datetime
);
with CTE_TimeTable
as
(
select @start as [date]
union all
select dateadd(ss,@interval, [date])
from CTE_TimeTable
where DateAdd(ss,@interval, [date]) <= @end
)
insert into @tpart
select [date] from CTE_TimeTable
OPTION (MAXRECURSION 0);
select t.dt, avg(c.x1), min(c.x1), max(c.x2), avg(c.x2), min(c.x2), max(c.x2) from clean.data c ,
@tpart t
where
ABS(DateDIFF(ss, t.dt , c.Date) ) <= …Run Code Online (Sandbox Code Playgroud)