2013-05-22 100 views
1

一列的元素之間的時間差假定我有以下表:PostgreSQL的:計算元素

id | elementID | date | time 
---------------------------- 

我搜索如下:

  1. 選擇所有「時間」 - 值按日期的給定elementID順序,時間(這是很容易)
  2. 計算時間值之間的時間差

第二點導致問題,因爲我不知道從哪裏開始。在C++中我將與遍歷所有的「時代」,簡單的計算

dt = time_i - time_{i-1} 
e.g. 
00:00:57 - 00:00:30 = 27s = dt 
00:01:05 - 00:00:57 = 8s = dt 
00:01:09 - 00:01:05 = 4s = dt 
etc. 

我感謝所有幫助

回答

8

你想要的lag窗函數迭代。

SELECT time_col - lag(time_col) OVER (ORDER BY whatever) 
FROM the_table 
ORDER BY whatever; 

window function tutorialuser manual page for window functions。窗口函數lag可讓您獲取當前結果集中結果集中的「上一個」行,並在表達式中使用它。

+0

你能解釋它是如何工作的嗎? –

+0

@Vivek更新。 –

+0

+1感謝您的更新:) –