Вы не дали структуры таблицы, но если я делаю фиктивный таблицу как:
create table t42 (id number, grp_id number, dt date);
insert into t42 values (1, 1, timestamp '2014-01-05 01:20:00');
insert into t42 values (2, 1, timestamp '2014-01-05 01:15:13');
insert into t42 values (3, 1, timestamp '2014-01-05 01:12:13');
insert into t42 values (4, 1, timestamp '2014-01-05 01:07:13');
insert into t42 values (5, 1, timestamp '2014-01-05 01:06:13');
Тогда это даст вам возраст каждой строки в группе по сравнению с его (аналитического) макс:
select grp_id, id, dt, max(dt) over (partition by grp_id) - dt as age
from t42
order by id;
GRP_ID ID DT AGE
---------- ---------- ------------------- ------------
1 1 2014-01-05 01:20:00 0
1 2 2014-01-05 01:15:13 .00332175926
1 3 2014-01-05 01:12:13 .00540509259
1 4 2014-01-05 01:07:13 .00887731481
1 5 2014-01-05 01:06:13 .00957175926
и вы можете использовать его в качестве внутреннего запроса и отфильтровать записи до 10 минут назад:
select grp_id, id, dt
from (
select grp_id, id, dt, max(dt) over (partition by grp_id) - dt as age
from t42
)
where age > (10*60)/(24*60*60)
order by id;
GRP_ID ID DT
---------- ---------- -------------------
1 4 2014-01-05 01:07:13
1 5 2014-01-05 01:06:13
И затем вы можете использовать эти удаление/обновление по мере необходимости. Из вашего вопроса неясно, будет ли ваша группа/раздел уже вычисляться из внутреннего запроса; если это так, вы можете просто использовать это вместо моей таблицы t42
. (Изменение имен столбцов и т. Д., Конечно).