如何根据前一列删除行 - postgresql

时间:2016-11-18 15:33:59

标签: postgresql duplicates

我的桌子看起来像这样:

action | timespan
------ | ------
start  |  NULL
------ | ------
finish | 00:10:30
------ | ------
start  | 00:05:00
------ | ------
start  | 00:00:01
------ | ------
abort  | 00:05:20
------ | ------
abort  | 00:12:33

重复操作来自后端,但我仍然需要准确的时间跨度 因此,我需要删除上一个操作之后的每个重复操作 这样每个开始(开始)都有一个结束(完成/中止) 像这样的东西

action | timespan
------ | ------
start  |  NULL
------ | ------
finish | 00:10:30
------ | ------
start  | 00:05:00
------ | ------
abort  | 00:05:20
------ | ------

这可能在postgresql中,如果是的话怎么样?

1 个答案:

答案 0 :(得分:0)

查看lag功能。

例如:

SELECT a.*
FROM (
  SELECT
    action,
    lag(action) over () as last_action,
    timespan
  FROM foo
) AS a
WHERE a.last_action IS NULL OR a.action <> a.last_action