我的桌子看起来像这样:
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中,如果是的话怎么样?
答案 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