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






Sum over order by

 
SQL>
SQL> set echo on
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, deptno,
  2    sum(sal) over (order by ename, deptno) sum_ename_deptno,
  3    sum(sal) over (order by deptno, ename) sum_deptno_ename
  4  from emp
  5  order by ename, deptno
  6  /

ENAME      DEPTNO SUM_ENAME_DEPTNO SUM_DEPTNO_ENAME
---------- ------ ---------------- ----------------
ADAMS          20          1100.00          9850.00

ALLEN          30          2700.00         21225.00
BLAKE                      5550.00         24075.00

CLARK          10          8000.00          2450.00

FORD           20         11000.00         12850.00

JAMES          30         11950.00         25025.00


ENAME      DEPTNO SUM_ENAME_DEPTNO SUM_DEPTNO_ENAME
---------- ------ ---------------- ----------------
JONES          20         14925.00         15825.00

KING           10         19925.00          7450.00

MARTIN         30         21175.00         26275.00

MILLER         10         22475.00          8750.00

SCOTT          20         25475.00         18825.00
SMITH                     26275.00         19625.00


ENAME      DEPTNO SUM_ENAME_DEPTNO SUM_DEPTNO_ENAME
---------- ------ ---------------- ----------------
TURNER         30         27775.00         27775.00
WARD                      29025.00         29025.00


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.avg over and avg 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