Avg over ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)
SQL> create table TestTable (
2 x number primary key,
3 y number
4 );
Table created.
SQL> insert into TestTable values (1, 7 );
1 row created.
SQL> insert into TestTable values (2, 1 );
1 row created.
SQL> insert into TestTable values (3, 2 );
1 row created.
SQL> insert into TestTable values (4, 5 );
1 row created.
SQL> insert into TestTable values (5, 7 );
1 row created.
SQL> insert into TestTable values (6, 34 );
1 row created.
SQL> insert into TestTable values (7, 32 );
1 row created.
SQL> insert into TestTable values (8, 43 );
1 row created.
SQL> insert into TestTable values (9, 87 );
1 row created.
SQL> insert into TestTable values (10, 32 );
1 row created.
SQL> insert into TestTable values (11, 12 );
1 row created.
SQL> insert into TestTable values (12, 16 );
1 row created.
SQL> insert into TestTable values (13, 63 );
1 row created.
SQL> insert into TestTable values (14, 74 );
1 row created.
SQL> insert into TestTable values (15, 36 );
1 row created.
SQL> insert into TestTable values (16, 56 );
1 row created.
SQL> insert into TestTable values (17, 2 );
1 row created.
SQL>
SQL> select * from TestTable;
X Y
---------- ----------
1 7
2 1
3 2
4 5
5 7
6 34
7 32
8 43
9 87
10 32
11 12
12 16
13 63
14 74
15 36
16 56
17 2
17 rows selected.
SQL>
SQL>
SQL> SELECT x, y,
2 AVG(y) OVER(ORDER BY x
3 ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) ma
4 FROM TestTable
5 ORDER BY x;
X Y MA
---------- ---------- ----------
1 7 4
2 1 3.33333333
3 2 2.66666667
4 5 4.66666667
5 7 15.3333333
6 34 24.3333333
7 32 36.3333333
8 43 54
9 87 54
10 32 43.6666667
11 12 20
12 16 30.3333333
13 63 51
14 74 57.6666667
15 36 55.3333333
16 56 31.3333333
17 2 29
17 rows selected.
SQL>
SQL>
SQL> drop table TestTable;
Table dropped.
SQL>
SQL>
Related examples in the same category