Bạn muốn loại bỏ bất kỳ hàng nào mà hàng trước đó có cùng loại. Vì vậy:
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;
where
mệnh đề cũng có thể được diễn giải như sau:
where prev_type is distinct from type
Nếu bạn muốn xóa các hàng "vi phạm", bạn có thể làm như sau - giả sử rằng timestamp
là duy nhất:
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;