第六次課 分組函數

分組函數(聚集函數):count:計數  sum   avg   max   min

  查詢emp表有多少位員工?  select count(*) from emp;  
                                               select count(empno) from emp; 如果參數爲列名,需是能唯一標識的
                                               select count(comm) from emp;不可以,因爲有的comm值爲空,不計數

  查詢20號部門所有員工的平均月收入:  
      select avg(sal+nvl(comm,0)) from emp where deptno=20;

  注意:(1)只有一個函數的參數可以是*: count
               (2) 有兩個函數要求參數類型必須是數值型: sum,avg
               (3) 所有分組函數在計算時忽略空值.

查詢每個部門的平均工資。
注意: 當select從句中包含單值列和分組函數時,所有的單值列必須作爲分組列。分組列的引導用group by 

    select deptno, avg(sal) from emp group by deptno; 
    select deptno, job,avg(sal) from emp group by deptno,job;

 查詢20號和30號部門每個部門的工資和。
   select deptno,sum(sal) from emp where deptno in(20,30) group by deptno;

   select from where group by order by;

查詢20號和30號部門每個部門的工資和,輸出工資和超過6000的部門號。

對分組後的結果進一步篩選,用having從句。 select from where group by having order by;

  select deptno,sum(sal) from emp where deptno in(20,30) group by deptno having sum(sal)>6000;  

查詢20號和30號部門每個部門的工資和,輸出工資和超過6000的部門號,按部門號降序。
  select deptno,sum(sal) from emp where deptno in(20,30) group by deptno having sum(sal)>6000 order by deptno desc;  

select deptno,sum(sal) from emp group by deptno having sum(sal)>6000 and deptno in(20,30) order by deptno desc;  

  說明: 分組函數可以出現在select從句、having從句、order by 從句中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章