Analytical Functions Oracle PLSQL

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>