Използвайте ROW_NUMBER
аналитична функция за намиране на редовете, които не са най-новите във всяка група и след това можете да използвате ROWID
псевдо-колона за корелация в DELETE
:
DELETE FROM tmp_data
WHERE ROWID IN (
SELECT rid
FROM (
SELECT ROWID As rid,
ROW_NUMBER() OVER (
PARTITION BY col_2, col_3, col_6
ORDER BY col_4 DESC
) AS rn
FROM tmp_data
)
WHERE rn > 1
)
Което изтрива 22 реда.
db<>fiddle тук