--向rollup传递一列
select division_id,sum(salary) from employees2 group by rollup(division_id);


--向rollup传递多列
select division_id,job_id,sum(salary) from employees2 group by rollup(division_id,job_id);


--修改传递给rollup的列的位置
select job_id,division_id,sum(salary) from employees2 group by rollup(job_id,division_id);

--向cube传递一列
select division_id,sum(salary) from employees2 group by cube(division_id);


--向cube传递多列
select division_id,job_id,sum(salary) from employees2 group by cube(division_id,job_id);


--修改传递给cube的列的位置
select job_id,division_id,sum(salary) from employees2 group by cube(job_id,division_id);

--grouping如果列值为空,那么返回1,如果列值非空,则返回0
select grouping(division_id),division_id,sum(salary) from employees2 group by rollup(division_id);


--使用decode转换grouping的一个列的值 rollup

select decode(grouping(division_id), 1, 'all divisions', division_id) div,

division_id,
sum(salary)
from employees2
group by rollup(division_id);


--使用decode转换grouping的多个列的值 rollup
select decode(grouping(division_id), 1, 'all divisions', division_id) div,
decode(grouping(job_id), 1, 'all jobs', job_id) job,
division_id,
sum(salary)
from employees2
group by rollup(division_id, job_id);


--使用decode转换grouping的一个列的值 cube

select decode(grouping(division_id), 1, 'all divisions', division_id) div,
division_id,
sum(salary)
from employees2
group by cube(division_id);

--使用decode转换grouping的多个列的值 cube
select decode(grouping(division_id), 1, 'all divisions', division_id) div,
decode(grouping(job_id), 1, 'all jobs', job_id) job,
division_id,
sum(salary)
from employees2
group by cube(division_id, job_id);

--使用grouping sets子句只返回小计记录
select division_id,job_id,sum(salary) from employees2 group by grouping sets(division_id,job_id);

--grouping_id

division_id和job_id两列都非空,返回0

division_id非空,job_id为空,返回1

division_id为空,job_id非空,返回2

division_id和job_id两列都为空,返回3

select division_id,
job_id,
grouping_id(division_id, job_id) grp_id,
sum(salary)
from employees2
group by cube(division_id, job_id);

--使用having过滤
select division_id,
job_id,
grouping_id(division_id, job_id) grp_id,
sum(salary)
from employees2
group by cube(division_id, job_id)
having grouping_id(division_id, job_id) > 0;

--在group by子句中多次使用一个列
select division_id, job_id, sum(salary)
from employees2
group by division_id, rollup(division_id, job_id);

--group_id消除group by子句返回的重复记录
select division_id, job_id, group_id(), sum(salary)
from employees2
group by division_id, rollup(division_id, job_id);


select division_id, job_id, group_id(), sum(salary)
from employees2
group by division_id, rollup(division_id, job_id) having group_id() = 0;

7.7 使用rollup子句的更多相关文章

  1. [转]group by 后使用 rollup 子句总结

    group by 后使用 rollup 子句总结 一.如何理解group by 后带 rollup 子句所产生的效果 group by 后带 rollup 子句的功能可以理解为:先按一定的规则产生多种 ...

  2. Grouping Sets:CUBE和ROLLUP从句

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

  3. 【T-SQL系列】WITH ROLLUP、WITH CUBE、GROUPING语句的应用

    CUBE 和 ROLLUP 之间的区别在于:CUBE 运算符生成的结果集是多维数据集.多维数据集是事实数据的扩展,事实数据即记录个别事件的数据.扩展建立在用户打算分析的列上.这些列被称为维.多维数据集 ...

  4. SQL注入: with rollup特性

    题目名称:因缺思汀的绕过 题目地址:http://www.shiyanbar.com/ctf/1940 1.with rollup: with rollup关键字会在所有记录的最后加上一条记录,该记录 ...

  5. 【Teradata】grouping和rollup窗口函数

    1.group by后带rollup子句 先按一定的规则产生多种分组,然后返回各个分组所产生的结果集的并集,且没有去掉重复数据(统计出的数据是求和还是最大值还是平均值等这就取决于SELECT后的聚合函 ...

  6. 使用 GROUP BY WITH ROLLUP 改善统计性能

    使用 GROUP BY 的 WITH ROLLUP 字句可以检索出更多的分组聚合信息,它不仅仅能像一般的 GROUP BY 语句那样检索出各组的聚合信息,还能检索出本组类的整体聚合信息. 下面我们的例 ...

  7. (转)MYSQL 的 WITH ROLLUP

    使用 GROUP BY 的 WITH ROLLUP 字句可以检索出更多的分组聚合信息,它不仅仅能像一般的 GROUP BY 语句那样检索出各组的聚合信息,还能检索出本组类的整体聚合信息. 下面我们的例 ...

  8. WITH ROLLUP、WITH CUBE、GROUPING语句的应用

    作者:Bobby0322 CUBE 和 ROLLUP 之间的区别在于:CUBE 运算符生成的结果集是多维数据集.多维数据集是事实数据的扩展,事实数据即记录个别事件的数据.扩展建立在用户打算分析的列上. ...

  9. 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)

    索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 五.透视.逆透视及分组 5.1 透视 所谓透视( ...

随机推荐

  1. ACM 找点

    找点 时间限制:2000 ms  |  内存限制:65535 KB 难度:2   描述 上数学课时,老师给了LYH一些闭区间,让他取尽量少的点,使得每个闭区间内至少有一个点.但是这几天LYH太忙了,你 ...

  2. ACM 交换输出

    交换输出 时间限制:3000 ms  |  内存限制:65535 KB 难度:1   描述 输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数.(如果这个第一个数就是最 ...

  3. TYVJ P3407 佳佳的魔法照片 Label:语文很重要 语文很重要 语文很重要

    描述 佳佳的魔法照片(mphoto.pas\c\cpp) [题目背景] 佳佳的魔法照片(Magic Photo):如果你看过<哈利•波特>,你就会知道魔法世界里的照片是很神奇的.也许是因为 ...

  4. iOS上让按钮文本左对齐问题

    一,问题分析 1.在做历史记录视图的时候,由于让键盘退出后才能触发表格的 didselect 那个代理方法,也就是得点两下才触发,而表格中的按钮点一下就可以立即响应. 2.于是我就有了用按钮事件代替 ...

  5. SDL实战,小游戏

    http://www.cppblog.com/sandy/archive/2005/12/28/2219.html sdl1教学 http://kelvmiao.info/sdl-tutorial-c ...

  6. MySQL实用技巧

    自增Id重新计数  TRUNCATE TABLE 表名 获取最后插入数据的ID   SELECT LAST_INSERT_ID(); 使用"id1,id2,id3"当参数  FIN ...

  7. not only ... but also

    轉載自http://210.240.55.2/~t311/moe/engb6/b6grammar/b6notonly.htm not only ... but also ... 是「不僅‧‧‧也是‧‧ ...

  8. PHP.ini文件读取不到

    Configuration File (php.ini) Path /usr/local/php/lib Loaded Configuration File (none) Linux 把 dtruss ...

  9. Func<T, TResult> Delegate

    public delegate TResult Func<in T, out TResult>( T arg ) http://msdn.microsoft.com/en-us/libra ...

  10. Java 异常讲解(转)

    六种异常处理的陋习 你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗?   1 OutputStreamWrite ...