2016-08-25 164 views
-1

你好我试图计算每个ID在每个交易之间的时间差异。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 

我真的很感激任何帮助。

谢谢

+3

您正在使用哪些DBMS?这可以使用'lag()'函数来解决。 'transaction_time'列的数据类型是什么? –

回答

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; 

虽然计算时间差的函数有所不同,但大多数数据库中的逻辑类似。

相关问题