[英]Getting date difference between consecutive rows in the same group
我有一个包含以下数据的数据库:
Group ID Time
1 1 16:00:00
1 2 16:02:00
1 3 16:03:00
2 4 16:09:00
2 5 16:10:00
2 6 16:14:00
我试图找出每个组中连续行之间的时间差异。 使用LAG()
和DATEDIFF()
(即https://stackoverflow.com/a/43055820 ),现在我具有以下结果集:
Group ID Difference
1 1 NULL
1 2 00:02:00
1 3 00:01:00
2 4 00:06:00
2 5 00:01:00
2 6 00:04:00
但是,当到达一个新组时,我需要区别来重置,如下所示。 有人可以建议吗?
Group ID Difference
1 1 NULL
1 2 00:02:00
1 3 00:01:00
2 4 NULL
2 5 00:01:00
2 6 00:04:00
代码如下所示:
select t.*,
datediff(second, lag(time) over (partition by group order by id), time)
from t;
这以秒为单位返回差异,但是您似乎知道如何将其转换为时间表示形式。 您似乎也知道group
不能用作列名,因为它是一个SQL关键字。
根据问题,您将group
放在lag()
的order by
子句中,而不是partition by
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.