我正在尝试找到具有相同ID的两行之间的时间差。
这是一张简单的表格。
该表格由myid
和timestamp
排序。我试图获得具有相同myid
的两行之间的总秒数。
这是我想出的。此查询的唯一问题是它计算所有记录的时间差,但不计算相同ID的时间差。
SELECT DATEDIFF(second, pTimeStamp, TimeStamp), q.*
FROM (
SELECT *,
LAG(TimeStamp) OVER (ORDER BY TimeStamp) pTimeStamp
FROM data
) q
WHERE pTimeStamp IS NOT NULL
这是输出。
我只希望输出以黄色突出显示。
有什么建议吗?
答案 0 :(得分:4)
修复只是将窗口(PARTITION BY
)缩小到具有相同ID
的行:
SELECT DATEDIFF(second, pTimeStamp, TimeStamp), q.*
FROM (
SELECT *,
LAG(TimeStamp) OVER (PARTITION BY ID ORDER BY TimeStamp) pTimeStamp
FROM data
) q
WHERE pTimeStamp IS NOT NULL