2013-05-22 75 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感谢您的更新:) –