Postgresql

日期時間累進和 PostgreSQL

  • June 18, 2020

我在這裡的第一個問題,但我查看了許多其他地方,找不到我的問題的答案。

id | track_seg_id |        time         
----+--------------+---------------------
 1 |            0 | 2020-05-23 07:45:32
 2 |            0 | 2020-05-23 07:46:04
 3 |            0 | 2020-05-23 07:46:53
 4 |            0 | 2020-05-23 07:46:58
 5 |            0 | 2020-05-23 07:47:03
 6 |            0 | 2020-05-23 07:47:08
 7 |            0 | 2020-05-23 07:47:11
 8 |            0 | 2020-05-23 07:47:16
 9 |            0 | 2020-05-23 07:47:20
10 |            0 | 2020-05-23 07:47:23

我想要做的是progressive sum從第一行到下一行獲得幾秒鐘。

id | track_seg_id |        time         |        prog         
----+--------------+---------------------+---------------------
 1 |            0 | 2020-05-23 07:45:32 | 0
 2 |            0 | 2020-05-23 07:46:04 | 32
 3 |            0 | 2020-05-23 07:46:53 | 81
 4 |            0 | 2020-05-23 07:46:58 | 86
 5 |            0 | 2020-05-23 07:47:03 | 91
 6 |            0 | 2020-05-23 07:47:08 | 96
 7 |            0 | 2020-05-23 07:47:11 | 99
 8 |            0 | 2020-05-23 07:47:16 | 104
 9 |            0 | 2020-05-23 07:47:20 | 108
10 |            0 | 2020-05-23 07:47:23 | 111

我打了不同的資源,計算累計總和執行總和計算累計總和,但我無法解決這個問題。

我認為您的意思是“秒”,而不是“分鐘”,並且您的值略有偏差。

如果我的懷疑是正確的,您可以使用 window 函式first_value並使用它extract來提取秒數:

SELECT *,
      EXTRACT(epoch FROM
              time - first_value(time) OVER (ORDER BY time)
             )
FROM mytable;

id | track_seg_id |        time         | date_part 
----+--------------+---------------------+-----------
 1 |            0 | 2020-05-23 07:45:32 |         0
 2 |            0 | 2020-05-23 07:46:04 |        32
 3 |            0 | 2020-05-23 07:46:53 |        81
 4 |            0 | 2020-05-23 07:46:58 |        86
 5 |            0 | 2020-05-23 07:47:03 |        91
 6 |            0 | 2020-05-23 07:47:08 |        96
 7 |            0 | 2020-05-23 07:47:11 |        99
 8 |            0 | 2020-05-23 07:47:16 |       104
 9 |            0 | 2020-05-23 07:47:20 |       108
10 |            0 | 2020-05-23 07:47:23 |       111
(10 rows)

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