首页-玉祥公司客服

标题: oracle分组-cube和rollup [打印本页]

作者: fteair    时间: 2020-4-15 16:46
标题: oracle分组-cube和rollup
先看代码:
表结构如下:
emp表
EMPNO                                     NOT NULL NUMBER(4)
ENAME                                              VARCHAR2(10)
JOB                                                VARCHAR2(9)
MGR                                                NUMBER(4)
HIREDATE                                           DATE
SAL                                                NUMBER(7,2)
COMM                                               NUMBER(7,2)
DEPTNO                                             NUMBER(2)
使用cube分组:
sql:select deptno,empno,count(empno),sum(sal) from emp group by cube(deptno,empno);
结果:
    DEPTNO      EMPNO COUNT(EMPNO)   SUM(SAL)
---------- ---------- ------------ ----------
                                14      29025
                 7900            1        950
                 7369            1        800
                 7499            1       1600
                 7521            1       1250
                 7566            1       2975
                 7654            1       1250
                 7698            1       2850
                 7782            1       2450
                 7788            1       3000
                 7839            1       5000
                 7844            1       1500
                 7876            1       1100
                 7902            1       3000
                 7934            1       1300
        10                       3       8750
        10       7782            1       2450
        10       7839            1       5000
        10       7934            1       1300
        20                       5      10875
        20       7369            1        800
        20       7566            1       2975
        20       7788            1       3000
        20       7876            1       1100
        20       7902            1       3000
        30                       6       9400
        30       7900            1        950
        30       7499            1       1600
        30       7521            1       1250
        30       7654            1       1250
        30       7698            1       2850
        30       7844            1       1500

32 rows selected.
使用rollup:
sql:select deptno,empno,count(empno),sum(sal) from emp group by rollup(deptno,empno);
结果:
    DEPTNO      EMPNO COUNT(EMPNO)   SUM(SAL)
---------- ---------- ------------ ----------
        10       7782            1       2450
        10       7839            1       5000
        10       7934            1       1300
        10                       3       8750
        20       7369            1        800
        20       7566            1       2975
        20       7788            1       3000
        20       7876            1       1100
        20       7902            1       3000
        20                       5      10875
        30       7900            1        950
        30       7499            1       1600
        30       7521            1       1250
        30       7654            1       1250
        30       7698            1       2850
        30       7844            1       1500
        30                       6       9400
                                14      29025

18 rows selected.
根据上面的结果,我们可以看出,cube相当于在rollup的基础上进行了功能扩展
就像是:rollup(a,b): 结果有(a,b),(a),()
    cube(a,b):结果有(a,b),(a),(b),()


作者: caixuqad    时间: 2020-4-15 18:08





欢迎光临 首页-玉祥公司客服 (http://bbs.delit.cn/) Powered by Discuz! X3.2