SQL计算每个ID的上次事务的时间

时间:2016-08-25 06:13:22

标签: sql

您好我在试图计算每个ID的每笔交易之间的时间差。

数据看起来像

Customer_ID | Transaction_Time
1             00:30
1             00:35
1             00:37
1             00:38
2             00:20
2             00:21
2             00:23

我试图让结果看起来像

Customer_ID | Time_diff
1             5
1             2
1             1
2             1
2             2

我真的很感激任何帮助。

由于

1 个答案:

答案 0 :(得分:0)

大多数数据库都支持LAG()功能。但是,日期/时间函数可能取决于数据库。以下是SQL Server的示例:

select t.*
from (select t.*,
             datediff(second,
                      lag(transaction_time) over (partition by customer_id order by transaction_time),
                      transaction_time
                     ) as diff
      from t
     ) t
where diff is not null;

虽然计算时差的函数不同,但逻辑在大多数数据库中都是类似的。