Oracle的group by除了基本使用方法以外,还有3种扩展使用方法,各自是rollup、cube、grouping sets。分别介绍例如以下:

1、rollup

对数据库表emp。如果当中两个字段名为a,b,c。

假设使用group by rollup(a,b),首先会对(a,b)进行group by ,然后对 a 进行 group by 。最后对全表进行 group by 操作。

例如以下查询结果:

查询语句

Select deptno,job,sum(sal) from emp group by rollup(deptno,job);

等同于

Select deptno,job,sum(sal) from emp group by deptno,job

union all

Select deptno,null sum(sal) from emp group by deptno

union all

Select null,null,sum(sal) from emp (group by null )

2、cube

假设使用group by cube(a,b),,则首先会对(a,b)进行group by,然后依次是(a),(b),最后对全表进行group by 操作,一共是2^2=4次grouping

例如以下查询结果。

查询语句

Select deptno,job,sum(sal) from emp group by cube(deptno,job);

等同于

Select deptno,job,sum(sal) from emp group by deptno,job

union all

Select deptno,null sum(sal) from emp group by deptno

union all

Select null,job, sum(sal) from emp group by job

union all

Select null,null,sum(sal) from emp (group by null )

3、grouping sets

grouping sets就是对參数中的每一个參数做grouping。假设使用group by grouping sets(a,b)。则对(a),(b)进行group by

例如以下查询结果:

查询语句

Select deptno,job,sum(sal) from emp group by cube(deptno,job);

等同于

select null,job,sum(sal) from emp group by job

union all

select deptno,null,sum(sal) from emp group by deptno

4、grouping

使用grouping能够推断该行是数据库中本来的行,还是有统计产生的行。grouping值为0时说明这个值是数据库中本来的值。为1说明是统计的结果,參数仅仅有一个,并且必须为group by中出现的某一列

例如以下查询结果:

查询语句

select deptno,job,sum(sal),grouping(deptno) a,grouping(job) b from emp group by rollup(deptno,job);

5、grouping_id

Grouping_id()的返回值事实上就是參数中的每列的grouping()值的二进制向量。假设grouping(a)=1,grouping(b)=1,则grouping_id(A,B)的返回值就是二进制的11。转成10进制就是3。

參数能够是多个,但必须为group by中出现的列。

查询结果例如以下:

查询语句

select deptno,job,sum(sal),grouping(deptno) a,grouping(job) b,grouping_id(deptno,job) from emp group by rollup(deptno,job);

6、group_id

GROUP_ID()唯一标识反复组,能够通过group_id去除反复组

查询结果例如以下:

查询语句

select deptno,job,sum(sal),group_id() from emp group by deptno, rollup(deptno,job) having group_id()=0;

Oracle中group by 的扩展函数rollup、cube、grouping sets

标签:net   rollup   oracle   jsb   from   产生   基本使用   log   font

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:http://www.cnblogs.com/yxysuanfa/p/6830388.html

oracle group by 两项,Oracle中group by 的扩展函数rollup、cube、grouping sets相关推荐

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

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

  2. oracle中的roll up,oracle  group by 与roll up,cube,grouping sets,grouping_id联合使用

    Oracle的group by除了基本用法以外,还有3种扩展用法,分别是rollup.cube.grouping sets. 1 rollup 假设有一个表test,有A.B.C.D.E5列. 如果使 ...

  3. SQL SERVER 关于with cube ,with rollup 和 grouping sets、group by

    GROUPING 运算符 with cube with rollup grouping sets with cube cube运算符在 SELECT 语句的 GROUP BY 子句中指定.该语句的选择 ...

  4. oracle里面查找重复项,Oracle查找重复记录中最大值的记录

    分析函数over是Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行. PARTITION BY ...

  5. oracle死锁视频教程,两个Oracle死锁解决实例

    关于数据库中的死锁.如果在应用中碰到都会毫不犹豫转交给DBA,但是从目前我接到的deadlock的问题来看,和Oracle官方的描述基本都 关于数据库中的死锁.如果在应用中碰到都会毫不犹豫转交给DBA ...

  6. oracle logon只有3项,oracle 10g 审计logon和logoff

    以下是我的配置:SQL> show parameter audit NAME                                 TYPE        VALUE--------- ...

  7. SQL中 GROUP BY HAVING注意项

    GROUP BY 注意项 1.GROUP BY 子句可以包含任意数目的列,因而可以对分组进行嵌套,更细致的进行数据分组. 2.如果在 GROUP BY 子句中嵌套了分组,数据将在最后指定的分组上进 行 ...

  8. Oracle数据库面试题 精选 Oracle 面试题

    Oracle数据库面试题 1.解释冷备份和热备份的不同点以及各自的优点 冷备份 发生在数据库已经正常关闭的情况下,将关键性文件拷贝到另外位置的一种说法.适用于所有模式的数据库. 优点 1. 是非常快速 ...

  9. oracle的chr的使用,Oracle 学习之:ASCII,CHR函数的作用和用法

    对于ASCII以及CHR函数的用法,Oracle给出的解释是: ASCII(x)gets the ASCII value of the character X, CHR() and ASCII() h ...

最新文章

  1. 12层也能媲美ResNet?邓嘉团队提出最新力作ParNet,ImageNet top1精度直冲80.7%
  2. mysql dba失业_DBA要失业了?AI优化水平超DBA老炮儿
  3. Laravel框架中Validor中错误信息$error的输出
  4. Ubuntu中安装配置和卸载FTP(转)
  5. python 生成器表达式_Python中的列表理解与生成器表达式
  6. 搜狗浏览器下 禁止浏览器自动填写用户名、密码
  7. Android 系统(65)---Android修改分区格式为F2FS
  8. 错误记录(二)java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I错误时的原因及解决办法
  9. 优质淘宝产品描述页模板框架PSD分层模板,美工实用素材
  10. 如何高效的学习前端的网页设计?
  11. freeradius 测试mysql_在linux下安装配置mysql+freeradius
  12. leaflet地图原理_基于 leaflet 的标注绘图
  13. GDI+_VB6_ARGB
  14. 【耀杨闯荡华儿街】当曹阿门问起hascode()和equals()方法“上篇”
  15. shell训练营日常打卡DAY1
  16. js是滚动条滑到固定位置_JavaScript 滚动条定位指定位置
  17. 计算机论文致谢词范文500字,2021年论文致谢词范文500字(通用5篇)
  18. IDAC(电流型DAC)的参数和性能测试
  19. ARM汇编寄存器和常用指令详解
  20. 福建师范大学2022年2月课程考试《形势与政策》作业考核试题

热门文章

  1. Hook技术之Hook Activity
  2. CF888E Maximum Subsequence(meet in the middle)
  3. 【实战】烂泥:一次纠结的系统安装
  4. python 学习资源收集汇总
  5. Remoting-1
  6. ios UIPickerView 技巧集锦
  7. stata中心化处理_带有stata第2部分自定义配色方案的covid 19可视化
  8. 直方图绘制与直方图均衡化实现
  9. leetcode130. 被围绕的区域(bfs)
  10. leetcode971. 翻转二叉树以匹配先序遍历(dfs)