日期:2014-05-17  浏览次数:21342 次

ORACLE GROUP BY进行多字段分组的问题
数据库中scott.emp这么一张表,我要进行如下业务操作:
1、各部门中,不同类别岗位的平均工资和最大工资;
2、各类别岗位中,不同部门的平均工资和最大工资;
我写这么两个SQL:
1、SELECT AVG(SAL),MAX(SAL),JOB,DEPTNO FROM SCOTT.EMP GROUP BY DEPTNO,JOB ORDER BY DEPTNO;
2、SELECT AVG(SAL),MAX(SAL),JOB,DEPTNO FROM SCOTT.EMP GROUP BY JOB,DEPTNO ORDER BY DEPTNO;

执行结果却是一样的?
求解这两种不通业务的分组方式实现.

------解决方案--------------------
结果确实没什么区别,你看看下面这种写法,是不是能明显点?
SQL code

SELECT AVG(SAL),MAX(SAL),JOB,DEPTNO FROM SCOTT.EMP GROUP BY DEPTNO,JOB ORDER BY DEPTNO;
SELECT AVG(SAL),MAX(SAL),JOB,DEPTNO FROM SCOTT.EMP GROUP BY JOB,DEPTNO ORDER BY JOB;

------解决方案--------------------
SQL code
GROUP BY DEPTNO,JOB
GROUP BY JOB,DEPTNO

-----------------------
上一行是表示先按照deptno分组再按照job分组,
下一行是表示先按照job分组再按照deptno分组
-----------------------
这个没什么好讨论的。