7 个解决方案
#1
不要用当前时间,用数据里的最大时间就好,前提你的采样间隔必须是3的倍数
select * from tb where datediff(mi,[time],(select max([time] from tb)))%((6*60)/3)=0
select * from tb where datediff(mi,[time],(select max([time] from tb)))%((6*60)/3)=0
#2
并且现在还每隔三分钟被写入一条数据
由于这个数据采样间隔时间可变,可设置1-24小时,取整数
这两句话不冲突吗?不好意思我没看懂.
由于这个数据采样间隔时间可变,可设置1-24小时,取整数
这两句话不冲突吗?不好意思我没看懂.
#3
我觉得这样的 最好是根据每天一个小时、两个小时 (1-24小时)。。。
这样去平均值 这样更准确
这样去平均值 这样更准确
#4
谢#1楼了,偶像。不过有个括号的位置摆错了,MAX那里,底下我给放回来了
select * from tb where datediff(mi,[time],(select max([time]) from tb))%((6*60)/3)=0
select * from tb where datediff(mi,[time],(select max([time]) from tb))%((6*60)/3)=0
#5
的确也有这方面的需求,麻烦给写一下,谢谢额
#6
(6*60)/3 为什么非要除以3,不除也可以吧,直接就是间隔6小时取数据了。能不能写个取时间段内最大最小平均的SQL,还是上边的表,这个时间段也是1-24小时
#7
。能不能写个取时间段内最大最小平均的SQL,还是上边的表
DECLARE @begin DATETIME ,@end DATETIME
SELECT @begin ='2011-6-28 12:00',@end='2011-6-28 18:00'
SELECT MAX(value),MIN(value),AVG(value)
FROM mytable
WHERE ttime>=@begin AND ttime <=@end
#1
不要用当前时间,用数据里的最大时间就好,前提你的采样间隔必须是3的倍数
select * from tb where datediff(mi,[time],(select max([time] from tb)))%((6*60)/3)=0
select * from tb where datediff(mi,[time],(select max([time] from tb)))%((6*60)/3)=0
#2
并且现在还每隔三分钟被写入一条数据
由于这个数据采样间隔时间可变,可设置1-24小时,取整数
这两句话不冲突吗?不好意思我没看懂.
由于这个数据采样间隔时间可变,可设置1-24小时,取整数
这两句话不冲突吗?不好意思我没看懂.
#3
我觉得这样的 最好是根据每天一个小时、两个小时 (1-24小时)。。。
这样去平均值 这样更准确
这样去平均值 这样更准确
#4
谢#1楼了,偶像。不过有个括号的位置摆错了,MAX那里,底下我给放回来了
select * from tb where datediff(mi,[time],(select max([time]) from tb))%((6*60)/3)=0
select * from tb where datediff(mi,[time],(select max([time]) from tb))%((6*60)/3)=0
#5
的确也有这方面的需求,麻烦给写一下,谢谢额
#6
(6*60)/3 为什么非要除以3,不除也可以吧,直接就是间隔6小时取数据了。能不能写个取时间段内最大最小平均的SQL,还是上边的表,这个时间段也是1-24小时
#7
。能不能写个取时间段内最大最小平均的SQL,还是上边的表
DECLARE @begin DATETIME ,@end DATETIME
SELECT @begin ='2011-6-28 12:00',@end='2011-6-28 18:00'
SELECT MAX(value),MIN(value),AVG(value)
FROM mytable
WHERE ttime>=@begin AND ttime <=@end