这种情况下怎么写SQL语句?超难

来源:百度知道 编辑:UC知道 时间:2024/06/25 21:51:59
我使用机器采集100个信号源,每1分钟采集一个,按照分钟编号,信号数值在100-200之间,但不是每个信号源都会在每个采集点上有信号的。采集之后的数据如下:

分钟序号 信号源1 信号源2 信号源3 .......
1 230 232 232

2 213 222 234

3 231 234 235

4 252 264 213
...

现在想找出在哪个分钟上,85个以上信号源的发出的信号比上一个分钟跳跃了5%以上。

请问:SQL语句该怎么写呢?
能否讲下怎么用游标实现?不明白,最好能有代码。谢谢了

游标实现吧.

用SQL也能实现,只是字段太度。写出来会很麻烦,建议用程序实现,那么SQL中只要用*就可以了。

Select * From
(
Select 分钟序号,
case When 增幅1>0.05 Then 1 Else 0 End+
case When 增幅2>0.05 Then 1 Else 0 End+
case When 增幅3>0.05 Then 1 Else 0 End+…… as 数量
From
(
Select B.分钟序号,abs(B.信号源1 -A.信号源1)*1.0 /A.信号源1 增幅1,abs(B.信号源2 -A.信号源2)*1.0 /A.信号源2 增幅2,……
From 表名 A Inner Join 表名 B On A.分钟序号=B.分钟序号-1
)A
)AA Where 数量>85

语句中的...可以用循环生成。

这个用个SQL就解决怕不太现实哦,写代码吧