Вам нужен коррелированный подзапрос с подсчетом следующих комментариев:
delete from peoplecomments pc
where
(
select count(*)
from peoplecomments pc2
where pc2.personid = pc.personid
and pc2.datefromcomment > pc.datefromcomment
) >= 10; -- at least 10 newer comments for the person
Кстати: хотя кажется, что мы могли бы просто нумеровать наши строки и соответственно удалять их с помощью
delete from
(
select
pc.*, row_number() over (partition by personid order by datefromcomment desc) as rn
from peoplecomments pc
)
where rn > 10;
Oracle, это не позволяет и дает нам ORA-01732: data manipulation operation not legal on this view
.