Oracle PL/SQL之GROUP BY CUBE

sudn發表於2011-12-21

ROLLUP會根據GROUP BY後面的欄位從右到左逐步以去掉右邊一個欄位,逐步向上累計求和,

CUBE則會對GROUP BY後面的欄位所有的組合進行分組求和。

CUBE eg1:

SELECT   department_id, job_id, SUM (salary)  
    FROM employees  
   WHERE department_id < 60  
GROUP BY CUBE (job_id, department_id);  
  
  
DEPARTMENT_ID JOB_ID     SUM(SALARY)  
------------- ---------- -----------  
                              211200  
           10                   4400  
           20                  19000  
           30                  24900  
           40                   6500  
           50                 156400  
              HR_REP            6500  
           40 HR_REP            6500  
              MK_MAN           13000  
           20 MK_MAN           13000  
              MK_REP            6000  
           20 MK_REP            6000  
              PU_MAN           11000  
           30 PU_MAN           11000  
              ST_MAN           36400  
           50 ST_MAN           36400  
              AD_ASST           4400  
           10 AD_ASST           4400  
              PU_CLERK         13900  
           30 PU_CLERK         13900  
              SH_CLERK         64300  
  
DEPARTMENT_ID JOB_ID     SUM(SALARY)  
------------- ---------- -----------  
           50 SH_CLERK         64300  
              ST_CLERK         55700  
           50 ST_CLERK         55700  
  
24 rows selected. 

CUBE eg2:

SELECT   department_id, job_id, SUM (salary)  
    FROM employees  
   WHERE department_id < 60  
GROUP BY CUBE (department_id, job_id);  
  
  
DEPARTMENT_ID JOB_ID     SUM(SALARY)  
------------- ---------- -----------  
                              211200  
              HR_REP            6500  
              MK_MAN           13000  
              MK_REP            6000  
              PU_MAN           11000  
              ST_MAN           36400  
              AD_ASST           4400  
              PU_CLERK         13900  
              SH_CLERK         64300  
              ST_CLERK         55700  
           10                   4400  
           10 AD_ASST           4400  
           20                  19000  
           20 MK_MAN           13000  
           20 MK_REP            6000  
           30                  24900  
           30 PU_MAN           11000  
           30 PU_CLERK         13900  
           40                   6500  
           40 HR_REP            6500  
           50                 156400  
  
DEPARTMENT_ID JOB_ID     SUM(SALARY)  
------------- ---------- -----------  
           50 ST_MAN           36400  
           50 SH_CLERK         64300  
           50 ST_CLERK         55700  
  
24 rows selected. 
本篇文章來源於 Linux公社網站(www.linuxidc.com)  原文連結:http://www.linuxidc.com/Linux/2011-08/40467.htm

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16860121/viewspace-713679/,如需轉載,請註明出處,否則將追究法律責任。

相關文章