b*******s 发帖数: 5216 | 1 一个表A存储了多条记录,每个记录有3个字段,分别是id(可以重复),timestamp,和
value
记录是按照timestamp的顺序依次插入的。目前要求:删除那些id不是连续出现的或者
值不是连续出现的记录
给个例子
time id value
11:00 1 1
11:01 2 2
11:02 2 2
11:03 3 1
11:04 2 2
11:05 2 2
11:06 2 3
11:07 1 1
11:08 2 2
处理完应该是
11:01 2 2
11:02 2 2
11:04 2 2
11:05 2 2 | f*****e 发帖数: 2992 | 2 select a.time a.id a.value
from t as a, t as b
where abs(a.time - b.time) = 1 && a.id = b.id && a.value == b.value
【在 b*******s 的大作中提到】 : 一个表A存储了多条记录,每个记录有3个字段,分别是id(可以重复),timestamp,和 : value : 记录是按照timestamp的顺序依次插入的。目前要求:删除那些id不是连续出现的或者 : 值不是连续出现的记录 : 给个例子 : time id value : 11:00 1 1 : 11:01 2 2 : 11:02 2 2 : 11:03 3 1
| b*******s 发帖数: 5216 | 3 谢谢,不过时间间隔不一定是1,可能是0,或者别的数字
不过你提供了思路了,我对SQL实在是不懂,只是工作中有人给了一组数据
需要分析,昨天我导出来用c++写了个程序
下回就能用你提供的思路处理了
【在 f*****e 的大作中提到】 : select a.time a.id a.value : from t as a, t as b : where abs(a.time - b.time) = 1 && a.id = b.id && a.value == b.value
| f*****e 发帖数: 2992 | 4 row number相差1也可以的。
【在 b*******s 的大作中提到】 : 谢谢,不过时间间隔不一定是1,可能是0,或者别的数字 : 不过你提供了思路了,我对SQL实在是不懂,只是工作中有人给了一组数据 : 需要分析,昨天我导出来用c++写了个程序 : 下回就能用你提供的思路处理了
| J*****u 发帖数: 44 | 5 学习了!
select a.time, a.id, a.value
from (select time,id,value,ROW_NUMBER() over (order by time) as rownumber
from testm
) as a, (select time,id,value,ROW_NUMBER() over (order by time) as rownumber
from testm
) as b
where abs(a.rownumber - b.rownumber) = 1 and a.id = b.id and a.value = b.
value |
|