Vous souhaitez supprimer toute ligne où la ligne précédente a le même type. Donc :
select timestamp, type
from (select t.*,
lag(type) over (order by timestamp) as prev_type
from ticket_events t
) t
where prev_type <> type or prev_type is null;
Le where
clause peut également être formulée comme :
where prev_type is distinct from type
Si vous souhaitez supprimer les lignes "incriminées", vous pouvez procéder comme suit :en supposant que timestamp
est unique :
delete from ticket_events
using (select t.*,
lag(type) over (order by timestamp) as prev_type
from ticket_events t
) tt
where tt.timestamp = t.timestamp and
tt.prev_type = t.type;