Postgresql

如何提取時間戳之間的差異

  • October 8, 2018

SQL 新手警報:

我有一個包含時間戳資訊(44 行)的表,我現在想計算並提取任意兩個連續行之間的增量。我怎樣才能做到這一點?我使用如下查詢選擇我的數據:

SELECT * from "table" where "RecognitionTimestamp" >= '2018-10-03 00:00:00' and "RecognitionTimestamp" <= '2018-10-04 9:00:00'

我正在使用 pgAdmin4 送出查詢並查看數據。

您可以使用Windows 函式,它提供對與目前行有某種關聯的一組表行的計算。函式列表位於文件的通用視窗函式部分,lead() 和 lag() 函式是您問題的答案。您的查詢應該是這樣的;

SELECT *,
 "RecognitionTimestamp" - lag("RecognitionTimestamp") OVER(ORDER BY "RecognitionTimestamp") AS delta_previous,
 lead("RecognitionTimestamp") OVER(ORDER BY "RecognitionTimestamp") - "RecognitionTimestamp" AS delta_next
FROM "table" 
WHERE
 "RecognitionTimestamp" >= '2018-10-03 00:00:00' AND 
 "RecognitionTimestamp" <= '2018-10-04 9:00:00'

引用自:https://dba.stackexchange.com/questions/219576