日期:2014-05-18  浏览次数:20423 次

求一条sql语句 急!!!!!!!顶者有分
value   time
    8     02:53:00
    5     02:54:00
    3     02:55:00
    3     02:56:00
    7     02:57:00
    9     02:58:00
    9     02:59:00
    6     02:30:00
隔一分钟取一次数据,取到的数据格式如上面所示,其中value为4到7之间的是正常数据,其余为超限数据,我现在想取超限数据的时间长度(分钟),请问该怎么做

------解决方案--------------------
没明白楼主的意思
------解决方案--------------------
没明白楼主想取哪段时间..
顶下..
------解决方案--------------------
楼主先举个例子。
------解决方案--------------------
select count(*) from 表 where value <4 or value <7
------解决方案--------------------
因为你一条记录就是1分钟,有几条错误的数据应该就是几分钟
------解决方案--------------------
你取value不在4到7之间的数据的条数
是不是就是你要的结果??
------解决方案--------------------
你可以让你的时间排序,这样能保证你的数据的唯一性,然后将判断条件加到SQL语句中!
------解决方案--------------------
不正常数据的总时间吗?
------解决方案--------------------
即从不正常数据到正常数据的间隔时间 ==> 用游标,累加.
------解决方案--------------------
ding xia
------解决方案--------------------
没明白

------解决方案--------------------
你把数据放在表中
然后 逐行逐条判断
------解决方案--------------------
从表中取出所有的超限记录,将其放入临时表。

用游标依次取临时表中的每一条纪录,在表中查找时间大于这条纪录的最近的正常值时间,如果找到 计算两纪录时间差,如果找不到,就查找下一个超限值时间,计算两个超限值的时间差 并跳到新的超限值纪录继续进行以上步骤,并将时间差值加入这次查找的时间值。

把每次得到的时间值记录下来

------解决方案--------------------
最简单的方法
select count(*) from tablename where value> 7 or value <4
得出的数据就是你要的分钟数,

------解决方案--------------------
或者只用游标一条一条的判断
declare rs cursor for
select * from table
open rs
declare @int int
set @int=0
fetch next from rs into @value,@time
while @@fetch_status = 0
begin
if value <4 or value> 7
@int=@int+1
else
if @int <> 0
begin
print @int
set @int=0
end
fetch next from rs into @value,@time
end
close rs
deallocate rs
------解决方案--------------------
dingxia
------解决方案--------------------
ls
已说 我顶


------解决方案--------------------
应该用between 4 and 7来取范围间的吧
------解决方案--------------------
ding xia
------解决方案--------------------
进来晃晃!~呵呵!~
------解决方案--------------------
select count(*) from tablename where value> 7 or value <4
------解决方案--------------------