Use o
ROW_NUMBER
função analítica para encontrar as linhas que não são as últimas em cada grupo e, em seguida, você pode usar o ROWID
pseudo-coluna para correlacionar no 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
)
O que exclui 22 linhas.
db<>fiddle aqui