我有一个日志表,其中记录了请求和响应,如果有一行用于请求,那么下一行将用于响应。有一个时间列,其中记录了他们的时间。我想写一个查询,它可以减去两个连续行的时间(即请求和响应),然后只给我那些时间差超过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
答案 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;
如果上述条件不成立,您可以使用相关子查询执行类似操作。