ORACLE GROUP BY进行多字段分组的问题

ccfandy 2012-05-09 04:03:18
数据库中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;

执行结果却是一样的?
求解这两种不通业务的分组方式实现.
...全文
16974 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lwycekong 2014-12-04
  • 打赏
  • 举报
回复
用rollup()函数。 select deptno,nvl(job,'合计'),max(sal),avg(sal),sum(sal) from emp where job is not null group by rollup(deptno,job); select job,nvl(to_char(deptno),'合计'),max(sal),avg(sal),sum(sal) from emp where job is not null group by rollup(job,deptno);
ccfandy 2012-05-10
  • 打赏
  • 举报
回复
不知道这里的分组跟EXCEL的多级分类汇总是否一致?
ccfandy 2012-05-09
  • 打赏
  • 举报
回复
2楼:
那跟描述的两个业务是有区别的吧?
  • 打赏
  • 举报
回复
就是分组顺序不同

  • 打赏
  • 举报
回复
GROUP BY DEPTNO,JOB
GROUP BY JOB,DEPTNO

-----------------------
上一行是表示先按照deptno分组再按照job分组,
下一行是表示先按照job分组再按照deptno分组
-----------------------
这个没什么好讨论的。
horizonlyhw 2012-05-09
  • 打赏
  • 举报
回复
结果确实没什么区别,你看看下面这种写法,是不是能明显点?

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;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧