group by與having子句,grouphaving子句

來源:互聯網
上載者:User

group by與having子句,grouphaving子句
group by子句
     有些情況下。需要把一個表中的行分為多個組,然後將這個組作為一個整體,獲得改組的一些資訊,例如,獲得各個部門的員工人數,或某個部門的員工的平均工資等,這時,就需要使用group by子句子句對錶中的資料進行分組。
     使用group by子句,可以根據表中的某一列或某幾列隊表中的資料行進行分組,多個列之間使用逗號分隔,如果根據多個列進行分組,oracle會首先根據第一列進行分組,然後再分出來的組中在按照第二列進行分組,以此類推。
     對資料分組後,主要是使用一些彙總函式對分組後的資料進行統計。
具體的操作如下:
SQL> select empno,deptno from emp;


     EMPNO     DEPTNO
---------- ----------
      7369         20
      7499         30
      7521         30
      7566         20
      7654         30
      7698         30
      7782         10
      7788         20
      7839         10
      7844         30
      7876         20
      7900         30
      7902         20
      7934         10
      7935         20
如上面的資料所示,在deptno在的資料值只有10,20,30,那麼如果我們想統計下屬於部門10,20,30的各個部門各有多少人,我們可以使用以下的語句:
SQL> select deptno "部門編號",count(*) "部門人數" from emp group by deptno;


  部門編號   部門人數
---------- ----------
        30          6
        20          6
        10          3
我們也可以統計各個部門的平均工資,如下:
SQL> select deptno,avg(sal) from emp group by deptno;


    DEPTNO   AVG(SAL)
---------- ----------
        30 1708.33333
        20 2645.83333

        10 2916.66667

group by和having的使用。

having子句
having子句通常與group by子句一起使用,在完成對分組結果的統計後,可以使用having子句對分組的結果進行進一步的篩選。
一個having子句最多可以包含40個運算式,having子句的運算式之間使用關鍵字and和or分隔。
如下所示,對已經完成分組的部門,我們選出部門人數大於5的部門。
SQL> select deptno "部門編號",count(*) "部門人數" from emp group by deptno having count(*)>5;


  部門編號   部門人數
---------- ----------
        30          6
        20          6
分組後選出部門編號大於10的部門
SQL> select deptno,avg(sal) from emp group by deptno having deptno>10;


    DEPTNO   AVG(SAL)
---------- ----------
        30 1708.33333
        20 2645.83333

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.