先看代码:

表结构如下:

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. 织梦dedecms后台发布文章提示“标题不能为空”

    问题症状:V5.7登录后台后,发布英文标题没问题,发布中文会提示“标题不能为空”. 问题根源:htmlspecialchars在php5.4默认为utf8编码,gbk编码字符串经 htmlspecia ...

  2. 使用Oracle数据库实现树形结构表的子-父级递归查询和删除,通过级联菜单简单举例

    前言: 我们在开发中,常常遇到单表的子-父id级联的表结构,在树形的深度不确定的情况下,一次查询出某个树形结构下的所有具有子-父级关系的数据变得十分困难. 这时,我们使用oracle提供的CONNEC ...

  3. Spring学习(12)--- @Autowired与@Resource 对比

    Spring不但支持自己定义的@Autowired注解,还支持由JSR-250规范定义的几个注解,如:@Resource. @PostConstruct及@PreDestroy. 1. @Autowi ...

  4. 同是办公软件,wps和office有什么区别?

    今天完美小编为大家带来的是wps和office有什么区别教程,那么到底有什么区别呢?相信很多朋友都模棱两可,说不出所以然,看看下面的教程,相信你会选择更适合你的那一款软件.一起来看看吧! 1.两者特点 ...

  5. 从deque到std::stack,std::queue,再到iOS 中NSArray(CFArray)

    从deque到std::stack,std::queue,再到iOS 中NSArray(CFArray) deque deque双端队列,分段连续空间数据结构,由中控的map(与其说map,不如说是数 ...

  6. SQL 和 .NET Framework 数据类型对应表

    SQL Server data type CLR data type (SQL Server) CLR data type (.NET Framework) varbinary SqlBytes, S ...

  7. DataTable数据导出Excel 并且下载

    public string Excel(System.Data.DataTable dt) { //模板的路径 string strUploadPath = HttpContext.Current.S ...

  8. Linux配置浮动IP实现WEB高可用

    在高可用集群环境中,一般都需要使用浮动IP来实现web高可用(High Availability). 浮动IP的概念以及为什么需要浮动IP请参考:浮动IP(FLOAT IP) 本篇文章主要讲实际操作步 ...

  9. Could not open input file: composer.phar

    Yii 2官网推荐用Composer安装框架,但是在本地出错:Could not open input file: composer.phar.后来修改了命令行就ok了,难道是我装的Composer跟 ...

  10. 如果导入的项目只有源码,可以将其他项目中的.classpath 和 .project复制到根目录下即可。

    如果导入的项目只有源码,没有对应的项目配置如web项目,可以将其他项目中的.classpath 和 .project复制到根目录下即可.