Oracle PL/SQL之GROUP BY CUBE


ROLLUP会根据GROUP BY后面的字段从右到左逐步以去掉右边一个字段,逐步向上累计求和,

CUBE则会对GROUP BY后面的字段所有的组合进行分组求和。

CUBE eg1:

  1. SELECT   department_id, job_id, SUM (salary)  
  2.     FROM employees  
  3.    WHERE department_id < 60  
  4. GROUP BY CUBE (job_id, department_id);  
  5.   
  6.   
  7. DEPARTMENT_ID JOB_ID     SUM(SALARY)  
  8. ------------- ---------- -----------  
  9.                               211200  
  10.            10                   4400  
  11.            20                  19000  
  12.            30                  24900  
  13.            40                   6500  
  14.            50                 156400  
  15.               HR_REP            6500  
  16.            40 HR_REP            6500  
  17.               MK_MAN           13000  
  18.            20 MK_MAN           13000  
  19.               MK_REP            6000  
  20.            20 MK_REP            6000  
  21.               PU_MAN           11000  
  22.            30 PU_MAN           11000  
  23.               ST_MAN           36400  
  24.            50 ST_MAN           36400  
  25.               AD_ASST           4400  
  26.            10 AD_ASST           4400  
  27.               PU_CLERK         13900  
  28.            30 PU_CLERK         13900  
  29.               SH_CLERK         64300  
  30.   
  31. DEPARTMENT_ID JOB_ID     SUM(SALARY)  
  32. ------------- ---------- -----------  
  33.            50 SH_CLERK         64300  
  34.               ST_CLERK         55700  
  35.            50 ST_CLERK         55700  
  36.   
  37. 24 rows selected.  

CUBE eg2:

  1. SELECT   department_id, job_id, SUM (salary)  
  2.     FROM employees  
  3.    WHERE department_id < 60  
  4. GROUP BY CUBE (department_id, job_id);  
  5.   
  6.   
  7. DEPARTMENT_ID JOB_ID     SUM(SALARY)  
  8. ------------- ---------- -----------  
  9.                               211200  
  10.               HR_REP            6500  
  11.               MK_MAN           13000  
  12.               MK_REP            6000  
  13.               PU_MAN           11000  
  14.               ST_MAN           36400  
  15.               AD_ASST           4400  
  16.               PU_CLERK         13900  
  17.               SH_CLERK         64300  
  18.               ST_CLERK         55700  
  19.            10                   4400  
  20.            10 AD_ASST           4400  
  21.            20                  19000  
  22.            20 MK_MAN           13000  
  23.            20 MK_REP            6000  
  24.            30                  24900  
  25.            30 PU_MAN           11000  
  26.            30 PU_CLERK         13900  
  27.            40                   6500  
  28.            40 HR_REP            6500  
  29.            50                 156400  
  30.   
  31. DEPARTMENT_ID JOB_ID     SUM(SALARY)  
  32. ------------- ---------- -----------  
  33.            50 ST_MAN           36400  
  34.            50 SH_CLERK         64300  
  35.            50 ST_CLERK         55700  
  36.   
  37. 24 rows selected.  

相关内容