2016-11-18 1 views
0

Ich habe eine Tabelle, die wie folgt aussieht:Wie Zeilen löschen, die auf der vorherige Spalte abhängig - postgresql

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

die doppelten Aktionen werden aus dem Backend kommen, aber ich brauche noch genau wie möglich den Zeitraum deshalb muß ich alle dupliziert Aktionen löschen, die nach der vorherige Aktion kommen so dass jeder Anfang (Start) ein Ende (Ende/Abbruch) so etwas wie diese

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

ist dies möglich, in postgresql und wenn ja wie?

+0

Haben lösen Sie Ihr Problem? – fafl

Antwort

0

Schauen Sie sich die lag Funktion an.

Zum Beispiel:

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 
+0

es irgendwie gelöst erkannte, dass das Problem war, dass die Ereignisse sich überschneiden –

Verwandte Themen