Если вы просто хотите идентификаторы, используйте агрегацию:
select id
from t
group by id
having max(failure) is null;
Я не вижу причин, чтобы получить все повторяющиеся строки.Если вы хотите их, то я предлагаю not exists
:
select t.*
from t
where not exists (select 1
from t t2
where t2.id = t.id and t2.failure is not null
);