avg over and avg over order by : Aggregrate Analytical « Analytical Functions « Oracle PL / SQL






avg over and avg over order by

 
SQL>
SQL> set echo on
SQL> set numformat 99999.99
SQL>
SQL> CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,
  2                    ENAME VARCHAR2(10),
  3                    JOB VARCHAR2(9),
  4                    MGR NUMBER(4),
  5                    HIREDATE DATE,
  6                    SAL NUMBER(7, 2),
  7                    COMM NUMBER(7, 2),
  8                    DEPTNO NUMBER(2));

Table created.

SQL>
SQL> INSERT INTO EMP VALUES (7369, 'SMITH', 'CLERK',    7902, TO_DATE('17-DEC-1980', 'DD-MON-YYYY'), 800, NULL, 20);

1 row created.

SQL> INSERT INTO EMP VALUES (7499, 'ALLEN', 'SALESMAN', 7698, TO_DATE('20-FEB-1981', 'DD-MON-YYYY'), 1600, 300, 30);

1 row created.

SQL> INSERT INTO EMP VALUES (7521, 'WARD',  'SALESMAN', 7698, TO_DATE('22-FEB-1981', 'DD-MON-YYYY'), 1250, 500, 30);

1 row created.

SQL> INSERT INTO EMP VALUES (7566, 'JONES', 'MANAGER',  7839, TO_DATE('2-APR-1981',  'DD-MON-YYYY'), 2975, NULL, 20);

1 row created.

SQL> INSERT INTO EMP VALUES (7654, 'MARTIN', 'SALESMAN', 7698,TO_DATE('28-SEP-1981', 'DD-MON-YYYY'), 1250, 1400, 30);

1 row created.

SQL> INSERT INTO EMP VALUES (7698, 'BLAKE', 'MANAGER', 7839,TO_DATE('1-MAY-1981', 'DD-MON-YYYY'), 2850, NULL, 30);

1 row created.

SQL> INSERT INTO EMP VALUES (7782, 'CLARK', 'MANAGER', 7839,TO_DATE('9-JUN-1981', 'DD-MON-YYYY'), 2450, NULL, 10);

1 row created.

SQL> INSERT INTO EMP VALUES (7788, 'SCOTT', 'ANALYST', 7566,TO_DATE('09-DEC-1982', 'DD-MON-YYYY'), 3000, NULL, 20);

1 row created.

SQL> INSERT INTO EMP VALUES (7839, 'KING', 'PRESIDENT', NULL,TO_DATE('17-NOV-1981', 'DD-MON-YYYY'), 5000, NULL, 10);

1 row created.

SQL> INSERT INTO EMP VALUES (7844, 'TURNER', 'SALESMAN', 7698,TO_DATE('8-SEP-1981', 'DD-MON-YYYY'), 1500, 0, 30);

1 row created.

SQL> INSERT INTO EMP VALUES (7876, 'ADAMS', 'CLERK', 7788,TO_DATE('12-JAN-1983', 'DD-MON-YYYY'), 1100, NULL, 20);

1 row created.

SQL> INSERT INTO EMP VALUES (7900, 'JAMES', 'CLERK', 7698,TO_DATE('3-DEC-1981', 'DD-MON-YYYY'), 950, NULL, 30);

1 row created.

SQL> INSERT INTO EMP VALUES (7902, 'FORD', 'ANALYST', 7566,TO_DATE('3-DEC-1981', 'DD-MON-YYYY'), 3000, NULL, 20);

1 row created.

SQL> INSERT INTO EMP VALUES (7934, 'MILLER', 'CLERK', 7782,TO_DATE('23-JAN-1982', 'DD-MON-YYYY'), 1300, NULL, 10);

1 row created.

SQL>
SQL>
SQL> select ename, sal, avg(sal) over ()
  2  from emp
  3  /

ENAME            SAL AVG(SAL)OVER()
---------- --------- --------------
SMITH         800.00        2073.21
ALLEN        1600.00        2073.21
WARD         1250.00        2073.21
JONES        2975.00        2073.21
MARTIN       1250.00        2073.21
BLAKE        2850.00        2073.21
CLARK        2450.00        2073.21
SCOTT        3000.00        2073.21
KING         5000.00        2073.21
TURNER       1500.00        2073.21
ADAMS        1100.00        2073.21

ENAME            SAL AVG(SAL)OVER()
---------- --------- --------------
JAMES         950.00        2073.21
FORD         3000.00        2073.21
MILLER       1300.00        2073.21

14 rows selected.

SQL>
SQL> select ename, sal, avg(sal)  over ( ORDER BY ENAME )
  2  from emp
  3  order by ename
  4  /

ENAME            SAL AVG(SAL)OVER(ORDERBYENAME)
---------- --------- --------------------------
ADAMS        1100.00                    1100.00
ALLEN        1600.00                    1350.00
BLAKE        2850.00                    1850.00
CLARK        2450.00                    2000.00
FORD         3000.00                    2200.00
JAMES         950.00                    1991.67
JONES        2975.00                    2132.14
KING         5000.00                    2490.63
MARTIN       1250.00                    2352.78
MILLER       1300.00                    2247.50
SCOTT        3000.00                    2315.91

ENAME            SAL AVG(SAL)OVER(ORDERBYENAME)
---------- --------- --------------------------
SMITH         800.00                    2189.58
TURNER       1500.00                    2136.54
WARD         1250.00                    2073.21

14 rows selected.

SQL>
SQL> drop table emp;

Table dropped.

SQL>

 








Related examples in the same category

1.count(*) over partition, order by, range unbounded preceding
2.count(*) over partition by, order by, range unbounded preceding
3.Employee salary report with avg salary for the previous 12 months
4.avg over range between
5.Is our average total_order_price increasing or decreasing?
6.analytic order-by clause
7.Sum over order by
8.Sum over partition by and order by
9.avg over order by range
10.average 5 before, after
11.Row-ordering is done first and then the moving average
12.Avg over ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)
13.SUM(y) OVER(ORDER BY x ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)
14.Use the COUNT aggregate analytical function to show how many rows are included in each window
15.To see how the moving average window can expand
16.Uses dates and logical offset of seven days preceding
17.A seven-day MAX and MIN on Tuesdays
18.A seven-day MAX and MIN on Tuesdays: using TO_CHAR function
19.Displaying a Running Total Using SUM as an Analytical Function
20.Reporting on a Sum