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

在oracle 11g关于group by语句的用法?
select avg(sal),max(sal), dept,job from emp group by dept,job;
 
  AVG(SAL) MAX(SAL) DEPT JOB
---------- ---------- ---- ----------
  950 1100 20 CLERK
  1450 1600 30 SALESMAN
  2975 2975 20 MANAGER
  1250 1250 30 SALEMAN
  950 950 30 CLERK
  5000 5000 10 PRESIDENT
  2850 2850 30 MANAGER
  1300 1300 10 CLERK
  2450 2450 10 MANAGER
  3000 3000 20 ANALYST

出来这样的结果有点不明白??求高手解释。
我这里的被查表的数据是:
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPT
----- ------- ---------- ----- ----------- --------- --------- ----
 7369 SMITH CLERK 7902 17/12/1989 800.00 20
 7499 ALLEN SALESMAN 7698 20/02/1981 1600.00 300.00 30
 7521 WARD SALESMAN 7698 22/02/1981 1250.00 500.00 30
 7566 JONES MANAGER 7839 2/04/1981 2975.00 20
 7654 MARTIN SALEMAN 7698 28/09/1981 1250.00 1400.00 30
 7698 BLAKE MANAGER 7839 1/05/1981 2850.00 30
 7782 CLARK MANAGER 7839 9/06/1981 2450.00 10
 7788 SCOTT ANALYST 7566 19/04/1987 3000.00 20
 7839 KING PRESIDENT 17/11/1981 5000.00 10
 7844 TURNER SALESMAN 7698 8/09/1981 1500.00 0.00 30
 7876 ADAMS CLERK 7688 23/05/1987 1100.00 0.00 20
 7900 JAMES CLERK 7688 3/12/1981 950.00 0.00 30
 7902 FORD ANALYST 7566 3/12/1981 3000.00 20
 7934 MILLER CLERK 7782 23/01/1982 1300.00 10

------解决方案--------------------
結果就是按dept,job分組後,按組內求平均及最大,數據有問題嗎?
------解决方案--------------------
这样就是按照dept,job进行分组之后,取sal的平均值、sal的最大值、dept和job显示,如果楼主想进行排序需要后面加上order by,还有不明白的请追问。