Now, if I want to create windows and run totals for different jobs I would PARTITION BY job:
SCOTT@PROD > select job, empno, ename, sum(sal) over (partition by job) as total_sal from emp;
JOB EMPNO ENAME TOTAL_SAL
--------- ---------- ---------- ----------
ANALYST 7788 SCOTT 6000
ANALYST 7902 FORD 6000
CLERK 7934 MILLER 4150
CLERK 7900 JAMES 4150
CLERK 7369 SMITH 4150
CLERK 7876 ADAMS 4150
MANAGER 7698 BLAKE 8275
MANAGER 7566 JONES 8275
MANAGER 7782 CLARK 8275
PRESIDENT 7839 KING 5000
SALESMAN 7844 TURNER 5600
SALESMAN 7654 MARTIN 5600
SALESMAN 7521 WARD 5600
SALESMAN 7499 ALLEN 5600
14 rows selected.
Elapsed: 00:00:00.03
Main Topics
Browse All Topics





by: paquicubaPosted on 2006-03-29 at 06:20:03ID: 16321847
In the above case PARTITION is useless ( SUM(field3) OVER () field4 --The same) . Field4 is getting populated with the total sum of field3 all way across, see the following example:
SCOTT@PROD > select empno, ename, sum(sal) over ( partition by null) as total_sal from emp;
EMPNO ENAME TOTAL_SAL
---------- ---------- ----------
7369 SMITH 29025
7499 ALLEN 29025
7521 WARD 29025
7566 JONES 29025
7654 MARTIN 29025
7698 BLAKE 29025
7934 MILLER 29025
7788 SCOTT 29025
7839 KING 29025
7844 TURNER 29025
7876 ADAMS 29025
7900 JAMES 29025
7902 FORD 29025
7782 CLARK 29025
14 rows selected.
Elapsed: 00:00:00.04
SCOTT@PROD > select empno, ename, sum(sal) over () as total_sal from emp;
EMPNO ENAME TOTAL_SAL
---------- ---------- ----------
7369 SMITH 29025
7499 ALLEN 29025
7521 WARD 29025
7566 JONES 29025
7654 MARTIN 29025
7698 BLAKE 29025
7782 CLARK 29025
7788 SCOTT 29025
7839 KING 29025
7844 TURNER 29025
7876 ADAMS 29025
7900 JAMES 29025
7902 FORD 29025
7934 MILLER 29025
14 rows selected.