2015-01-08 1 views
0

Я пытаюсь получить данные с интервалом в 10 минут с последней даты каждой группы или раздела.Окно диапазона аналитических функций для максимального интервала дат

Псевдо код SQL:

Select 
count(1) Over(partition by col1, col2, col3 
       Order by Col_Date Desc 
       Range Max(Col_Date) Between Max(Col_Date) - 10(24*60)) col_upd 
From 
Table_1; 

Значения из этого конкретного диапазона будет иметь необходимо присвоить номер, чтобы установить для удаления.

2014-01-05 01:20:00 -- Max date 
2014-01-05 01:15:13 
2014-01-05 01:12:13 
2014-01-05 01:07:13 -- 1) these last two rows should be set for 
2014-01-05 01:06:13 -- 2) delete or assign same id 

Есть ли какая-либо аналитическая функция, чтобы подойти к этому?

ответ

0

Вы не дали структуры таблицы, но если я делаю фиктивный таблицу как:

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. (Изменение имен столбцов и т. Д., Конечно).

 Смежные вопросы

  • Нет связанных вопросов^_^