Pruebe los pasos descritos en este artículo:Eliminación de duplicados de una base de datos PostgreSQL.
Describe una situación en la que tiene que lidiar con una gran cantidad de datos que no es posible group by
.
Una solución simple sería esta:
DELETE FROM foo
WHERE id NOT IN (SELECT min(id) --or max(id)
FROM foo
GROUP BY hash)
Donde hash
es algo que se duplica.