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 中的函数来实现此目的 -
- 滞后
- 时间戳差异
- 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
您好,我正在尝试编写一个查询来计算特定分组(在本例中为“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 中的函数来实现此目的 -
- 滞后
- 时间戳差异
- 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