分区,引导,左连接。不同行数据time-s之间的差异

partition, lead, left join. difference between different line data time-s

我有关于引擎工作时间的数据。数据包括:

我需要了解引擎每天工作多长时间的信息。为了做到这一点,我需要采取例如:第一个停止记录到(这意味着引擎开始工作)结束从(引擎停止工作的地方)推断出下一行停止

为了这样做,我得出的结论是我必须使用分区前导和左连接。

select 
object id, 
engine start (stop to) , 
engine stop (alias after joining), 
time_difference (datediff between engine start "stop to" and engine stop "stop from" alias)

在我分区之后,每一行都有自己的 ID,我需要将分区行 ID "lead"(或者只是“+1”或“>”)左连接到当前分区行 ID。

这是我设法解决该任务的方法,但我是 sql 的新手,我无法完成该任务。有什么建议吗?

此查询 将相应的 stopfrom 日期追加到每一行:

SELECT
    testdata.*,
    LEAD(stopfrom, 1, NULL) OVER (PARTITION BY objectid ORDER BY stopto) AS next_stopfrom
FROM testdata

计算时差:

WITH cte AS (
    SELECT
        testdata.*,
        LEAD(stopfrom, 1, NULL) OVER (PARTITION BY objectid ORDER BY stopto) AS next_stopfrom
    FROM testdata
)
SELECT cte.*, DATEDIFF(minute, stopto, next_stopfrom)
FROM cte