思路是,找出奇偶行放在两个表,然后作差,上sql:
有bug,只能算出一半的差值

#取出奇数行数据
select * fromselect @rownum1:=@rownum1+1 as row_num,t1.tract_time
from table_name t1,(select @rownum1:=0)tmp_table)tt1
where tt1.row_num%2=1;

#取出偶数行数据
select * fromselect @rownum1:=@rownum1+1 as row_num,t1.tract_time
from table_name t1,(select @rownum1:=0)tmp_table)tt1
where tt1.row_num%2=0;

#把两个表合并,计算相邻两条记录的时间差
select ttt1.*,ttt2.*,ttt2.tract_time-ttt1.tract_time as time_diff
from
(select * from
(select @rownum1:=@rownum1+1 as row_num,t1.tract_time as tract_time
from table_name t1,(select @rownum1:=0)tmp_table)tt1
where tt1.row_num%2=1) ttt1,
(select * fromselect @rownum2:=@rownum2+1 as row_num,t1.tract_time as tract_time
from table_name t1,(select @rownum2:=0)tmp_table)tt1
where tt1.row_num%2=0) ttt2
where ttt2.row_num=ttt1.row_num+1;


哈哈,来更新了,修复bug

#取出所有数据从1开始
select @rownum1:=@rownum1+1 as row_num,t1.tract_time
from table_name t1,(select @rownum1:=0)tmp_table)tt1;

#取出所有数据从2开始
select @rownum1:=@rownum1+1 as row_num,t1.tract_time
from table_name t1,(select @rownum1:=1)tmp_table)tt2;

#将行数相同的作差
select * fromselect tt1.row_num,tt1.tract_time as time1,tt2.row_num,tt2.tract_time as time2,(tt2.tract_time-tt1.tract_time) as diff from (
select @rownum1:=@rownum1+1 as row_num,t1.tract_time
from table_name t1,(select @rownum1:=0)tmp_table) tt1,
(select @rownum1:=@rownum1+1 as row_num,t1.tract_time
from table_name t1,(select @rownum1:=1)tmp_table) tt2;
)
where tt2.row_num=tt2.row_num) f where diff > 100;

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐