Я думаю, что вы можете использовать этот запрос, он дает тот же результат, который вы упомянули.
Сценарий создания таблицы:
create table practicenew (ID number, Value1 number) ;
insert into practicenew (ID, Value1) values (1, 3) ;
insert into practicenew (ID, Value1) values (2,4) ;
insert into practicenew (ID, Value1) values (3,5);
insert into practicenew (ID, Value1) values (4,5);
insert into practicenew (ID, Value1) values (5,6);
insert into practicenew (ID, Value1) values (6,2 );
Затем используйте функцию NVL и Lag. Lag перенесет ваше предыдущее значение в текущую строку, а nvl используется для первой строки, так как при использовании lag у вас будет нулевое значение в первой строке.
Query: select ID, value1,nvl(((lag(value1) over (order by ID) + value1)/2),value1) as Value2
from practicenew;
Выход:
ID Value1 Value2
1 3 3
2 4 3.5
3 5 4.5
4 5 5
5 6 5.5
6 2 4
Надеюсь, это поможет!