17,137
社区成员
发帖
与我相关
我的任务
分享
SQL> SELECT * FROM EMP;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH CLERK 7902 1980-12-17 800.00 20
7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30
7521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 30
7566 JONES MANAGER 7839 1981-4-2 2975.00 20
7654 MARTIN SALESMAN 7698 1981-9-28 1250.00 1400.00 30
7698 BLAKE MANAGER 7839 1981-5-1 2850.00 30
7782 CLARK MANAGER 7839 1981-6-9 2450.00 10
7788 SCOTT ANALYST 7566 1987-4-19 3000.00 20
7839 KING PRESIDENT 1981-11-17 5000.00 10
7844 TURNER SALESMAN 7698 1981-9-8 1500.00 0.00 30
7876 ADAMS CLERK 7788 1987-5-23 1100.00 20
7900 JAMES CLERK 7698 1981-12-3 950.00 30
7902 FORD ANALYST 7566 1981-12-3 3000.00 20
7934 MILLER CLERK 7782 1982-1-23 1300.00 10
14 rows selected
-- 每个部门每个岗位的平均工资
SQL> SELECT DECODE(GROUPING(DEPTNO),1,'--TOTAL--',DEPTNO) "AVG_DEPTNO",
2 DECODE(GROUPING(JOB)+GROUPING(DEPTNO),1,'--SUBTOTAL--',2,NULL,JOB) "AVG_JOB",
3 AVG(SAL)
4 FROM EMP E
5 GROUP BY ROLLUP(DEPTNO,JOB)
6 ;
AVG_DEPTNO AVG_JOB AVG(SAL)
---------------------------------------- ------------ ----------
10 CLERK 1300
10 MANAGER 2450
10 PRESIDENT 5000
10 --SUBTOTAL-- 2916.66666
20 CLERK 950
20 ANALYST 3000
20 MANAGER 2975
20 --SUBTOTAL-- 2175
30 CLERK 950
30 MANAGER 2850
30 SALESMAN 1400
30 --SUBTOTAL-- 1566.66666
--TOTAL-- 2073.21428
13 rows selected
-- 每个部门的平均工资
SQL> SELECT DEPTNO,
2 AVG(SAL)
3 FROM EMP E
4 GROUP BY DEPTNO;
DEPTNO AVG(SAL)
------ ----------
10 2916.66666
20 2175
30 1566.66666
-- 每个岗位的平均工资
SQL> SELECT JOB,
2 AVG(SAL)
3 FROM EMP E
4 GROUP BY JOB;
JOB AVG(SAL)
--------- ----------
ANALYST 3000
CLERK 1037.5
MANAGER 2758.33333
PRESIDENT 5000
SALESMAN 1400
SQL>
SELECT DISTINCT DEPTNO,
JOB,
AVG(SAL) OVER(PARTITION BY DEPTNO, JOB),
AVG(SAL) OVER(PARTITION BY DEPTNO),
AVG(SAL) OVER(PARTITION BY JOB)
FROM scott.EMP ;
[Quote=引用楼主 DiligenceMan 的帖子:]SELECT deptno, job, AVG(sal)
FROM emp
GROUP BY rollup(deptno, job)
/