rollup(),cube(),grouping sets()
  上面这几个函数,是对group by分组功能做的功能扩展。
a.rollup()
  功能:在原结果基础上追加一行总合计记录
  rollup(字段1,字段2)会追加按字段1进行的合计记录,
  最后再追加一个总合计记录
 
  select deptno,count(*)
  from emp
  group by rollup(deptno);
 
  select deptno,job,count(*)
  from emp
  group by rollup(deptno,job)
  order by deptno;
  ----等价于下面写法-----
  select deptno,job,count(*)
  from emp
  group by deptno,job
  union
  select deptno,null,count(*)
  from emp
  group by deptno
  union
  select null,null,count(*)
  from emp
  order by deptno;
 
  结论:group by rollup(字段1,字段2,字段3)
    --查询按字段1,字段2,字段3分组统计结果
    --追加按字段1和字段2的合计
    --追加按字段1的合计
    --追加总合计记录
b.cube()
 
  select deptno,count(*)
  from emp
  group by cube(deptno)
  order by deptno;
 
  cube(字段1):作用于rollup(字段1)相同。
   追加一行总合计记录。
 
  select deptno,job,count(*)
  from emp
  group by cube(deptno,job)
  order by deptno;
  --查询group by deptno,job分组统计结果
  --查询group by deptno分组统计结果
  --查询group by job分组统计结果
  --查询没有group by统计结果
 
 结论:group by cube(字段1,字段2,字段3)
  --查询group by 字段1,字段2,字段3统计结果
  --查询group by 字段1,字段2统计结果
  --查询group by 字段1统计结果
  --查询group by 字段2统计结果
  --查询group by 字段3统计结果
  --查询group by 字段2,字段3统计结果
  --查询group by 字段1,字段3统计结果
  --查询没有group by统计结果
 
c.grouping sets()
 
  select deptno,count(*)
  from emp
  group by grouping sets(deptno)
  order by deptno;
  --上面和没加grouping sets()效果一样
 
  select deptno,job,count(*)
  from emp
  group by grouping sets(deptno,job)
  order by deptno;
 --只返回cube规则追加的分组统计结果
 --不包含没有group by和group by deptno,job的统计
  

高级聚合函数rollup(),cube(),grouping sets()的更多相关文章

  1. [转]详解Oracle高级分组函数(ROLLUP, CUBE, GROUPING SETS)

    原文地址:http://blog.csdn.net/u014558001/article/details/42387929 本文主要讲解 ROLLUP, CUBE, GROUPING SETS的主要用 ...

  2. [Hive_11] Hive 的高级聚合函数

    0. 说明 Hive 的高级聚合函数 union all | grouping sets | cube | rollup pv //page view 页面访问量 uv //user view 访问人 ...

  3. Oracle分析函数 — sum, rollup, cube, grouping用法

    本文通过例子展示sum, rollup, cube, grouping的用法. //首先建score表 create table score( class  nvarchar2(20), course ...

  4. GROUP BY中ROLLUP/CUBE/GROUPING/GROUPING SETS使用示例

    oracle group by中rollup和cube的区别: Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句.CUBE ROLLUP 是用于统计数据的. 实验 ...

  5. hive grouping sets 等聚合函数

    函数说明: grouping sets 在一个 group by 查询中,根据不同的维度组合进行聚合,等价于将不同维度的 group by 结果集进行 union allcube 根据 group b ...

  6. hive group by聚合函数增强

    1.grouping sets grouping sets子句都可以根据UNION连接的多个GROUP BY查询进行逻辑表示 SELECT a,b,SUM(c)FROM tab1 GROUP BY a ...

  7. 在MongoDB中实现聚合函数 (转)

    随着组织产生的数据爆炸性增长,从GB到TB,从TB到PB,传统的数据库已经无法通过垂直扩展来管理如此之大数据.传统方法存储和处理数据的成本将会随着数据量增长而显著增加.这使得很多组织都在寻找一种经济的 ...

  8. 在MongoDB中实现聚合函数

    在MongoDB中实现聚合函数 随着组织产生的数据爆炸性增长,从GB到TB,从TB到PB,传统的数据库已经无法通过垂直扩展来管理如此之大数据.传统方法存储和处理数据的成本将会随着数据量增长而显著增加. ...

  9. 10-31SQLserver基础--聚合函数、分组

    在查询语句时,也存在一些方法和属性,而这些方法在查询时统称为函数,便利查询时使用 聚合函数(都是针对字段操作) 聚合是缩减一系列输入值的表达式,例如缩减为单个值. Select*from biao 1 ...

随机推荐

  1. Spring自带字符编码过滤器

    http://blog.csdn.net/youngage/article/details/51356821 http://blog.csdn.net/daelly/article/details/5 ...

  2. NEFU 119

    和上一题一样,注意除不尽为0 #include <iostream> #include <cstdio> #include <cstring> #include & ...

  3. Java关键字整理之二

    abstrac和interface 一.抽象类:abstract 抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情.对于一个父 ...

  4. Mac OSX Yosemite 10.10 brew 错误:mktemp: mkdtemp failed on /tmp/git-LIPo: No such file or directory

    这个问题困扰了我非常久非常久.使得我不得不花一点时间来说一下解决方法. 事情是这种:前两天兴高採烈的更新了一下宝贝mac到10.10. 一切看起来都那么美好,可是. .当我又一次安装magento的时 ...

  5. 【Cocos2d-x】坐标系和图层

    在Cocos2D-X中,存在四种坐标系: 1.OpenGL坐标系:该坐标系原点在屏幕左下角.x轴向右,y轴向上.这也就是cocos2dx中用到的坐标系所以没啥好说的. 2.屏幕坐标系(UIKit坐标) ...

  6. mysqli的简单工具包

    mysqli的简单工具包 <?php /** * 连接 * @param string $host * @param string $user * @param string $password ...

  7. zzulioj--1858--单词翻转(模拟)

    1858: 单词翻转 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 88  Solved: 35 SubmitStatusWeb Board Desc ...

  8. 算法入门经典第七章 例题7-2-1 生成1-n的排列

    输入正数n,按字典序从小到大的顺序输出n个数的所有排列.两个序列的字典序大小关系等价于从头开始第一个不相同位置处的大小关系. 递归的边界应该很好理解吧,当集合s[]中没有一个元素的时候,按照上面的伪码 ...

  9. Kylin基础教程(二)

    近期先把Kylin教程整理完毕,后续根据大家需求(可能会发起投票),整理其他技术栈知识教程. OK,那么接上一篇文章,感性认知了Kylin之后,我们先来看一下如何部署Kylin吧. 序号也依然沿用上一 ...

  10. git工具的安装和使用

    啰嗦几句: 世界上本没有后悔药,但软件开发提供了后悔药,那就是代码管理工具.它可以让你的代码穿越回以前的状态,甚至可以指定某一个时刻,而且还可以穿越回来. 当下流行的代码管理工具有 SVN 和 GIT ...