先看代码:

表结构如下:

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. c++ thread

    Either pthread_join(3) or pthread_detach() should be called for each thread,that an application crea ...

  2. bootstrap-datetimepicker bootstrap-datepicker bootstrap-timepicker 时间插件

    <!DOCTYPE html><head> <title>时间插件测试</title><style type="text/css&quo ...

  3. 实现Runnable接口和继承Thread类之间的区别

    在Java语言中,我们都知道,有两种创建线程的方式,一中是使用Runnable接口,另一种是使用Thread类. public class DemoRunnable implements Runnab ...

  4. 前台跨站点获取session

    var sessionId = System.Web.HttpContext.Current.Response.Cookies[System.Web.Security.FormsAuthenticat ...

  5. Javaee需不需要培训?培训完可以顺利找到工作吗?

    Javaee需不需要培训?培训完可以顺利找到工作吗? 在IT行业中Java以它通用性.高效性.平台移植性和安全性遍布各个领域,它的火热也给IT市场发展带来一定影响,随着Java技术的广泛运营,企业对J ...

  6. 手动ecache处理

    手动ecache处理: import net.sf.ehcache.Cache; import net.sf.ehcache.CacheManager; import net.sf.ehcache.E ...

  7. 保存Druid的监控记录

    继上篇帖子之后 , 公司又要求将Druid Monitor的监控信息保存起来 , 因为Druid的监控记录在是缓存的,重启之后无法找回,所以需要做持久化,定期把监控记录转存到日志文件中 研究了半天 , ...

  8. Linux下php安装memcache

    Linux下php安装memcache说明:php安装目录:/phpstudy/server/php/bin/phpphp.ini配置文件路径:/phpstudy/server/php/etc/php ...

  9. Generic(泛型)

    什么是泛型:"通过参数化类型来实现在同一份代码上操作多种数据类型.利用"参数化类型"将类型抽象化,从而实现灵活的复用". 简单来说泛型就是为了使一些代码能够重复 ...

  10. 使用Scribefire在博客中插入语法高亮 II

    效果如下, 这是我们在Scribefire中添加的code按钮,单击此按钮,则会出现 在codeHere中直接输入代码就可以了. 查看html 可以看到,其中已经添加了<pre>标签. 下 ...