zoukankan      html  css  js  c++  java
  • 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),()

    这仅是本人的一些心得,有失当的地方希望指点。。。

  • 相关阅读:
    java Object类是可以接收集合类型的
    java.lang.String中[ "张飞"+1+1 ] 和 [ "张飞"+(1+1) ]
    AFL Fuzz入门
    [转载]linux与grep
    linux下安装clamav
    [转载]Linux连续执行多条命令
    [转载]linux下各文件夹的结构说明及用途介绍
    [转载]linux常用命令
    [转载]Ubuntu 16.04 蓝屏解决方案
    pycharm修改python版本
  • 原文地址:https://www.cnblogs.com/sunshinekevin/p/6808557.html
Copyright © 2011-2022 走看看