Вы можете использовать tsranges для поиска совпадений. Запрос был бы немного проще, если бы существовал уникальный ключ, и вы можете столкнуться с проблемами, если есть повторяющиеся строки, но вот основная идея:
-- The rows to be deleted:
select * from bookmark WHERE exists
(select 1 from bookmark bm2
WHERE bm2.systemid = bookmark.systemid
AND bm2.filename = bookmark.filename
AND (bookmark.systemid, bookmark.filename, bookmark.mindatetime, bookmark.maxdatetime) IS DISTINCT FROM (bm2.systemid, bm2.filename, bm2.mindatetime, bm2.maxdatetime)
AND tsrange(bookmark.mindatetime, bookmark.maxdatetime, '[]') <@ tsrange(bm2.mindatetime, bm2.maxdatetime, '[]')
);
systemid | filename | mindatetime | maxdatetime
----------+---------------+---------------------+---------------------
10006 | monitor_3.dat | 2019-04-28 08:00:00 | 2019-04-28 10:00:00
10006 | monitor_3.dat | 2019-04-28 09:00:00 | 2019-04-28 11:00:00
72777 | monitor_4.dat | 2019-04-28 11:00:00 | 2019-04-29 18:00:00
-- Delete them like so:
delete from bookmark WHERE exists
(select 1 from bookmark bm2
WHERE bm2.systemid = bookmark.systemid
AND bm2.filename = bookmark.filename
AND (bookmark.systemid, bookmark.filename, bookmark.mindatetime, bookmark.maxdatetime) IS DISTINCT FROM (bm2.systemid, bm2.filename, bm2.mindatetime, bm2.maxdatetime)
AND tsrange(bookmark.mindatetime, bookmark.maxdatetime, '[]') <@ tsrange(bm2.mindatetime, bm2.maxdatetime, '[]')
);
Обратите внимание, что это не совсем соответствует ожидаемому результату из-за опечатки в ваших данных. Эти две строки не перекрываются:
72777 | monitor_4.dat | 2019-04-28 09:00:00 | 2019-04-29 11:00:00
72777 | monitor_4.dat | 2019-04-28 09:30:00 | 2019-04-29 23:00:00
Если вы действительно не хотите обновить и удалить? В этом случае вам лучше всего создать новую таблицу и переименовать ее:
CREATE TABLE bookmark_load AS
SELECT systemid, filename, min(mindatetime), max(maxdatetime)
FROM bookmark
GROUP BY systemid, filename;
ALTER TABLE bookmark RENAME TO bookmark_old;
ALTER TABLE bookmark_load RENAME TO bookmark;
Конечно, вы не можете вставлять новые данные в закладки при этом.