先看代码:

表结构如下:

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),()

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

oracle分组-神奇的cube和rollup的更多相关文章

  1. 【转】【CUBE】Oracle分组函数之CUBE魅力

    http://blog.itpub.net/519536/viewspace-610997/ Oracle的CUBE与ROLLUP功能很相似,也是在数据统计分析领域的一把好手.  关于ROLLUP的查 ...

  2. Oracle分组函数之CUBE魅力

    Oracle的CUBE与ROLLUP功能很相似,也是在数据统计分析领域的一把好手. 关于ROLLUP的查询统计功能请参考文章<Oracle分组函数之ROLLUP魅力>(http://www ...

  3. oracle group by中cube和rollup字句的使用方法及区别

    oracle group by中rollup和cube的区别:  Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句. 如果是ROLLUP(A, B, C)的话,先 ...

  4. Oracle分组函数之CUBE

    功能介绍: 首先是进行无字段的聚合,然后依次对每个字段进行聚合 创建表: 插入测试数据: ROLLUP: Select t.classid,t.studentname,Sum(t.score) Fro ...

  5. Oracle分组函数cube VS rollup

    分析函数cube和rollup魅力首先请看下面例子1)创建表create table group_test (group_id int, job varchar2(10), name varchar2 ...

  6. Oracle分组函数之ROLLUP用法

    rollup函数 本博客简单介绍一下oracle分组函数之rollup的用法,rollup函数常用于分组统计,也是属于oracle分析函数的一种 环境准备 create table dept as s ...

  7. [Oracle] Group By 语句的扩展 - Rollup、Cube和Grouping Sets

    常常写SQL语句的人应该知道Group by语句的主要使用方法是进行分类汇总,以下是一种它最常见的使用方法(依据部门.职位分别统计业绩): SELECT a.dname,b.job,SUM(b.sal ...

  8. Oracle的聚合函数group by结合CUBE和ROLLUP的使用

    转自:https://docs.oracle.com/cd/E11882_01/server.112/e25554/aggreg.htm#DWHSG8618 CUBE Syntax CUBE appe ...

  9. Grouping Sets:CUBE和ROLLUP从句

    在上一篇文章里我讨论了SQL Server里Grouping Sets的功能.从文中的例子可以看到,通过简单定义需要的分组集是很容易进行各自分组.但如果像从所给的列集里想要有所有可能的分布——即所谓的 ...

随机推荐

  1. java基础(十二章)

    一.变量的作用域(有效的使用范围) 1.变量有2种 1.1成员变量(属性) 声明在类的里面,方法的外面 1.2 局部变量 声明在方法里面或for循环结构中 2.调用时的注意事项(初始值不同.作用域不同 ...

  2. Log4PHP 配置和使用

    Log4PHP2.3.0使用解释 1. 什么是Log4PHP Log4php它为apche组织维护项目,是Log4xx系列日志组件之一,log4j在JAVA中可算是大名鼎鼎的日志开发包.Log4PHP ...

  3. spring boot + mybatis + druid

    因为在用到spring boot + mybatis的项目时候,经常发生访问接口卡,服务器项目用了几天就很卡的甚至不能访问的情况,而我们的项目和数据库都是好了,考虑到可能时数据库连接的问题,所以我打算 ...

  4. Git配合Tag的代码回滚

    现有的远程仓库版本的tag为v1.0 前置准备 具体操作: 我们在本地修改一下readme文件,然后进行add,commit操作. 再给我们的commit打上tag git tag -a v1.1 - ...

  5. node.js如何制作命令行工具(一)

    之前使用过一些全局安装的NPM包,安装完之后,可以通过其提供的命令,完成一些任务.比如Fis3,可以通过fis3 server start 开启fis的静态文件服务,通过fis3 release开启文 ...

  6. Qlik报表开发见解

    因为项目需要,最近去做了Qlik Sense报表开发,学习了Qlik报表的开发方法和一些基础的开发模式,以下是我对Qlik报表开发的一些见解,个人水平有限,欢迎大神指导. 1.Qlik Sense的函 ...

  7. [leetcode-560-Subarray Sum Equals K]

    Given an array of integers and an integer k, you need to find the total number of continuous subarra ...

  8. Loadrunner--自动关联和手动关联

    2017-06-09 15:32:45个人也属于刚刚开始学习,有什么不对的地方敬请指导:qq:389791447 一开始的时候,准备去学习怎么去关联.一时也毛不着头脑,就在网上找了一些视频看,有的人说 ...

  9. v2013调试无法访问此网站 localhost 拒绝了我们的连接请求

    问题描述:          别人给的服务器代码,在本地部署以后调试的,localhost:8080 可以访问,localhost:2524访问不了需要改什么配置吗 解决思路:           这 ...

  10. CentOS 下搭建FTP服务器

    vsftpd是Linux下比较著名的FTP服务器,搭建FTP服务器当然首选这个.本文介绍了在CentOS 6 4下安装vsftpd.配置虚拟用户登录FTP的过程.正 vsftpd是Linux下比较著名 ...