【问题标题】:Calculate time difference between two consecutive rows, show only results greater than计算连续两行之间的时间差,只显示大于的结果
【发布时间】:2021-05-28 00:54:20
【问题描述】:

我有一张这样的桌子:

RecordID     user_id                transaction_date
1            USER1                  27-05-2021 18:31:24
2            USER1                  27-05-2021 18:38:55
3            USER1                  27-05-2021 18:44:39
4            USER1                  27-05-2021 19:00:42
5            USER1                  27-05-2021 19:06:23


SELECT user_id, TO_CHAR(dstamp, 'HH24:MI:SS') AS transaction_time
FROM inventory_transaction
WHERE dstamp BETWEEN to_date('27/05/2021 18:00:00', 'dd/mm/yyyy hh24:mi:ss')  AND            
                 to_date('28/05/2021 06:00:00', 'dd/mm/yyyy hh24:mi:ss') 
ORDER BY user_id;

我需要这个输出:

RecordID     user_id                transaction_date            DIFFERENCE
1            USER1                  27-05-2021 18:31:24         (null)
2            USER1                  27-05-2021 18:38:55         00:07:31
3            USER1                  27-05-2021 18:44:39         00:05:44
4            USER1                  27-05-2021 19:00:42         00:16:03
5            USER1                  27-05-2021 19:06:23         00:05:41

我需要获取连续交易日期值之间的差异。我正在使用 oracle sql dev 12。 有任何想法吗? 非常感谢。

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    使用lag():

    SELECT user_id, TO_CHAR(dstamp, 'HH24:MI:SS') AS transaction_time,
           (dstamp - prev_stamp) * (24 * 60 * 60) as diff_seconds
    FROM (SELECT it.*,
                 LAG(dstamp) OVER (PARTITION BY user_id ORDER BY dstamp) as prev_dstamp
          FROM inventory_transaction it
         ) it
    WHERE dstamp BETWEEN to_date('27/05/2021 18:00:00', 'dd/mm/yyyy hh24:mi:ss')  AND            
                     to_date('28/05/2021 06:00:00', 'dd/mm/yyyy hh24:mi:ss') 
    ORDER BY user_id;
    

    在 Oracle 中,以秒而不是时间格式更容易获得差异。

    【讨论】:

      猜你喜欢
      • 2017-02-14
      • 2019-05-29
      • 2022-01-19
      • 1970-01-01
      • 2016-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多