使用SQL查询查找表的两个连续条目之间的差异

时间:2015-03-31 14:35:42

标签: mysql sql

我有一个日志表,其中记录了请求和响应,如果有一行用于请求,那么下一行将用于响应。有一个时间列,其中记录了他们的时间。我想写一个查询,它可以减去两个连续行的时间(即请求和响应),然后只给我那些时间差超过4秒的req和响应。

表格就像这样

Sr.no     Type     time
1         Req      2015-03-31 02:26:36.330000
2         Res      2015-03-31 02:26:36.330000
3         Req      2015-03-31 03:18:30.780000
4         Res      2015-03-31 03:18:30.820000

1 个答案:

答案 0 :(得分:0)

如果您知道srno的增量值没有间隙,那么您可以使用这样的连接:

select lreq.*, lres.time,
       timestampdiff('second', lreq.time, lres.time) as diff_in_secs
from logs lreq join
     logs lres
     on lreq.srno = lres.srno - 1 and
        lreq.type = 'req' and
        lres.type = 'res'
having diff_in_secs > 4;

如果上述条件不成立,您可以使用相关子查询执行类似操作。