繁体   English   中英

获取同一组中连续行之间的日期差

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM