Mysql 根据分组计算行之间的时间差

Mysql calculate timediffrence between rows based on grouping

您好,我正在尝试编写一个查询来计算特定分组(在本例中为“skopor”)中每一行的时差,如图所示:

What i trying to accomplish

我正在使用此代码,但它不起作用,它给新组 (Skopor) 之前的最后一个戳记一个负数。

SELECT A.id, A.Skopor, A.Timestamp, (B.Timestamp - A.Timestamp) AS timediffFROM Skopor A INNER JOIN Skopor B ON B.id = (A.id + 1) ORDER BY A.Skopor ASC

您可以按照 mysql 中的函数来实现此目的 -

  1. 滞后
  2. 时间戳差异
  3. sec_to_time

主查询-

select t.*, 
sec_to_time(timestampdiff(second,ifnull(lag(t.time_1) over 
(partition by skopor order by id), t.time_1), t.time_1)) as time_diff 
from tab_time_diff t;

这是数据库 fiddle