文档章节

ORACLE 高级分组

胡子叭槎
 胡子叭槎
发布于 2017/03/04 21:20
字数 625
阅读 91
收藏 0
  1. group by rollup(a,b)
    该分组先做一次a和b的分组,再去掉b做一次a的分组,再去掉a做一次0的分组(相当月不分组)。总体逻辑就是分组条件一个一个的减少,直至没有条件不分组为止
    例如:统计公司每个部门的薪水综合,部门编号以及公司所有薪水总和
    SQL> select deptno,sum(sal) from emp group by rollup(deptno);
    
        DEPTNO   SUM(SAL)
    ---------- ----------
    	10	 8750
    	20	10875
    	30	 9400
    		29025
    

    最后一行就显示了所有薪水综合。

    例如:统计公司每个部门的每个职位的薪水总和,每个部门薪水总和,公司总薪水,显示部门编号,职位,薪水总和。

    SQL> select deptno,job,sum(sal) from emp group by rollup(deptno,job);
    
        DEPTNO JOB	       SUM(SAL)
    ---------- --------- ----------
    	10 CLERK	   1300
    	10 MANAGER	   2450
    	10 PRESIDENT	   5000
    	10		   8750
    	20 CLERK	   1900
    	20 ANALYST	   6000
    	20 MANAGER	   2975
    	20		  10875
    	30 CLERK	    950
    	30 MANAGER	   2850
    	30 SALESMAN	   5600
    
        DEPTNO JOB	       SUM(SAL)
    ---------- --------- ----------
    	30		   9400
    			  29025
    
    13 rows selected.

     

  2. group by cube(a,b)
    该分组类类似于group by 0
                           group by a
                           group by b
                           group by a,b
    例如:统计公司每个部门的每个职位的薪水总和,每个部门薪水总和,每个职位薪水总和, 公司总薪水,显示部门编号,职位,薪水总和。

    SQL> select deptno,job,sum(sal) from emp group by cube(deptno,job);
    
        DEPTNO JOB	       SUM(SAL)
    ---------- --------- ----------
    			  29025
    	   CLERK	   4150
    	   ANALYST	   6000
    	   MANAGER	   8275
    	   SALESMAN	   5600
    	   PRESIDENT	   5000
    	10		   8750
    	10 CLERK	   1300
    	10 MANAGER	   2450
    	10 PRESIDENT	   5000
    	20		  10875
    
        DEPTNO JOB	       SUM(SAL)
    ---------- --------- ----------
    	20 CLERK	   1900
    	20 ANALYST	   6000
    	20 MANAGER	   2975
    	30		   9400
    	30 CLERK	    950
    	30 MANAGER	   2850
    	30 SALESMAN	   5600
    
    18 rows selected.
    

     

  3. grouping sets 分组组合
    grouping sets(a,b)类似于:group by a
                                              group by b
    例如:统计公司每个部门薪水总和,每个职位薪水总和,以及显示部门编号,职位,薪水总和。

    SQL> select deptno,job from emp group by grouping sets(deptno,job);
    
        DEPTNO JOB
    ---------- ---------
    	   CLERK
    	   SALESMAN
    	   PRESIDENT
    	   MANAGER
    	   ANALYST
    	30
    	20
    	10
    
    8 rows selected.
    
  4. grouping() 分组表报告函数
    grouping (a) 能显示字段a是否被用作分组,0 是,1 否。

    SQL> select deptno,job,grouping(deptno) from emp group by grouping sets(deptno,job);
    
        DEPTNO JOB	     GROUPING(DEPTNO)
    ---------- --------- ----------------
    	   CLERK		    1
    	   SALESMAN		    1
    	   PRESIDENT		    1
    	   MANAGER		    1
    	   ANALYST		    1
    	30			    0
    	20			    0
    	10			    0
    
    8 rows selected.
    



     

© 著作权归作者所有

胡子叭槎
粉丝 22
博文 140
码字总数 147885
作品 0
成都
数据库管理员
私信 提问
PostgreSQL Oracle 兼容性 - Analysis函数之keep

标签 PostgreSQL , Oracle , 分析函数 , 窗口函数 , keep 背景 Oracle 分析函数KEEP,类似OVER的语法结构(当然,含义与之不同)。keep可以用于普通的查询,也可以用于分组聚合,同时亦可用于...

德哥
2018/06/21
0
0
PostgreSQL 递归应用实践 - 非“传销”的高并发实时藤、树状佣金分配体系

标签 PostgreSQL , 佣金分配 , 树状 , 藤状 , 递归查询 , 传销 背景 早在十年前,PostgreSQL 8点几的版本就支持了递归查询,递归查询的应用非常的广泛,如下: 《PostgreSQL 递归妙用案例 - ...

德哥
04/14
0
0
Oracle数据库学习的福利来啦——最佳入门经验分享

适用人群:从事数据库技术实施或售后工程师,准备参加OCA,OCP认证考试 通过学习对Oracle数据库的相关基础知识进行梳理,最终共同提炼出必须最先掌握的那部分知识,无论你是数据库开发、管理、...

让往事随风
2016/04/13
72
0
PostgreSQL Oracle 兼容性 - connect by 2

标签 PostgreSQL , Oracle , 树形查询 , 递归 , connect by , tablefunc , connectby 背景 Oracle connect by语法经常用于有树形关系的记录查询,PostgreSQL使用CTE递归语法,可以实现同样的...

德哥
2018/10/05
0
0
oracle中group by的高级用法

简单的group by用法 select c1,sum(c2) from t1 where t1<>'test' group by c1 having sum(c2)>100; rollup(多列)——上卷汇总,从最后一个汇总字段开始上卷汇总,一直到合计 select c1,c2,s......

hulubo
2012/04/09
740
0

没有更多内容

加载失败,请刷新页面

加载更多

计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
昨天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部