我正在以各种方式尝试解决此问题。我有一张表格,其中有一列提供ID(不自动递增),另一张表格包含TIMESTAMP数据,如图所示。
Here is the table (table name: t_serie)
我想计算整个表中行中日期与行+1中日期之间的差异(以秒为单位)。
SELECT SUM(TIMESTAMPDIFF(SECOND, t1.time, t2.time)) as total
FROM t_serie AS t1 INNER JOIN t_serie as t2 ON t2.id = t1.id +1
这是我正在使用的查询,但由于id列不是自动增量值,因此无法使用。如何在不使用ALTER TABLE或不使用自动增量ID添加新列的情况下做到这一点?
非常感谢您的回答!
答案 0 :(得分:0)
您需要使用下一个更大的ID将表的id
列连接在一起。
因此,如果要加入比当前ids
大的所有id
中的至少一个,就应该这样做。
我认为以下查询对您有用。
SELECT SUM(TIMESTAMPDIFF(SECOND, t1.time, t2.time)) as total
FROM t_serie AS t1
INNER JOIN t_serie as t2
ON t2.id = (SELECT MIN(id) FROM t_serie t3 where t1.id < t3.id);
答案 1 :(得分:0)
对于每个time
,您可以使用子查询来检查序列中的下一个time
。然后以秒为单位计算差异。
SELECT
time_a,
time_b,
TIMESTAMPDIFF(SECOND, time_a, time_b) as difference_in_seconds
FROM (
SELECT
`time` AS time_a,
(
SELECT `time`
FROM t_serie b
WHERE b.time > a.time
ORDER BY b.time asc
LIMIT 1
) AS time_b
FROM t_serie a
) tmp