Mysql 根据时差从子查询的下一行中选择字段

Mysql 根据时差从子查询的下一行中选择字段,mysql,sql,Mysql,Sql,我试图从下一行抓取一个字段,然后计算Mysql中当前行字段和下一行字段之间的时差。但它总是给我60小时的时间差。既然这已经超过一天了,那就错了 我的问题是这样的: select DATE_FORMAT( last_call, '%d' ) AS 'day', COUNT(call_id) as id, SEC_TO_TIME(SUM((select timestampdiff(second, calls.last_call, c2.last_call) from call

我试图从下一行抓取一个字段,然后计算Mysql中当前行字段和下一行字段之间的时差。但它总是给我60小时的时间差。既然这已经超过一天了,那就错了

我的问题是这样的:

select DATE_FORMAT( last_call, '%d' ) AS 'day',
    COUNT(call_id) as id,

   SEC_TO_TIME(SUM((select timestampdiff(second, calls.last_call, c2.last_call)
    from calls c2
    where c2.calling_agent = calls.calling_agent and
          c2.last_call > calls.last_call and
          timestampdiff(second, calls.last_call, c2.last_call) > 600
    order by c2.last_call
    limit 1
   ))) brakes
来自电话 其中调用_代理=9 最后一次通话>日期(现在(),间隔12个月)
按提取分组(上次调用的日期)

您可以使用相关子查询获取下一个值:

select c.*,
       (select c2.last_call
        from calls c2
        where c2.calling_agent = c.calling_agent and
              c2.last_call > c.last_call
        order by c2.last_call
        limit 1
       ) next_last_call
from calls c;
如果愿意,可以使用
timestampdiff()
获取下一个和当前之间的差异:

select c.*,
       (select timestampdiff(second, c.last_call, c2.last_call)
        from calls c2
        where c2.calling_agent = c.calling_agent and
              c2.last_call > c.last_call
        order by c2.last_call
        limit 1
       ) diff_in_secs
from calls c;

然后应用您想要的任何逻辑(可能将其用作子查询)。

可能有助于定义“下一行”。我不知道如何将它添加到我的查询中,这样就可以得到每天每行之间的时间差?但是只有那些大于10分钟的?你能帮忙吗???