rollup配合goup by使用,照小组进行分组,同时求总计。可以提供信息汇总功能(类似于"小计")
ROLLUP在数据统计和报表生成过程中带来极大的便利

rollup操作---按GROUP BY ROLLUP()本身是分组统计求和的意思

如果是ROLLUP(A, B, C)的话,
首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作。

下面是一个简单例子:
1、不使用group by 分组

查询各部门各职位的工资情况
select   job,deptno,sal

from   emp

order by job, deptno

JOB           DEPTNO            SAL
ANALYST      20              3000.00
ANALYST      20              3000.00    --->group by 之后 ANALYST    20      6000.00

CLERK         10               1300.00
CLERK         20                800.00
CLERK         20               1100.00
CLERK         30               950.00

MANAGER    10               2450.00
MANAGER    20               2975.00
MANAGER    30               2850.00

PRESIDENT 10               5000.00

SALESMAN  30               1250.00
SALESMAN  30               1500.00
SALESMAN  30               1250.00
SALESMAN  30               1600.00

2、使用group by 分组
select job,deptno,sum(sal) total_sal   
from emp   
group by rollup(job,deptno); 
查询员工表,对各个部门的各个职位进行分组,对工资进行小计和总计

JOB         DEPTNO      TOTAL_SAL
CLERK         10               1300
CLERK         20               1900
CLERK         30                 950
CLERK                             4150

ANALYST      20               6000
ANALYST                        6000

MANAGER     10              2450
MANAGER     20              2975
MANAGER     30              2850
MANAGER                       8275

SALESMAN    30             5600
SALESMAN                     5600

PRESIDENT   10             5000 
PRESIDENT                    5000          -->PRESIDENT职位总计

29025         --->总计

如果year不想累加,可以写成
Select year,month,area,sum(total_sale) from SaleOrder group by year, rollup(month,area)
        
Grouping用法

Grouping是用来判断当前Column是否是一个合计列,1为yes,
Select Decode(Grouping(area),1,'所有地区',area) area, 
       Decode(Grouping(month),1,'所有月份',month), sum(money) 
From   SaleOrder 
Group by RollUp(area,month);

--如果是一个合计列,则用Decode把它转为"所有月份" 、'所有地区'

rollup 如何去掉最后一行的总统计

使用:grouping_id

select   job,deptno,sum(sal)   total_sal   from   emp   group   by   rollup(job,deptno) 
having grouping_id(job,deptno)<=1

查询的结果就会把最后一行的总计给去掉

grouping_id中括号里面的字段和rollup括号里面的字段一致就行
grouping_id是肿么来的?它是oracle的函数,针对rollup和cube的
grouping_id的数字是怎么确定的?
向量值,可以认为是二进值的数,例:grouping_id(a,b,c),如果列a为空就是0 非空为1,列b和列c也一样,
结果会得到一个三位数,用二进制转换成十进制就是了,例:a,b,c全是非空,说明这行数据是一个总计,那么就是111
即7,三列就是7,如果是两列自然是11就是3了。
因为Grouping是用来判断当前Column是否是一个合计列,如果是一个合计列,则相应的列会是一个空值

转载地址:http://wjlvivid.iteye.com/blog/1696436

oracle的rollup操作---按照小组进行分组,同时求总计相关推荐

  1. 用oracle的rollup函数进行合计操作

    需求: 用oracle的rollup函数进行合计操作 公式: select decode(a,null,'合计',a) ,b,sum(c) c from t group by rollup((a,b, ...

  2. oracle 连接查询,子查询,分组函数

    1.oracle 连接查询 2.oracle 子查询 3.oracle 分组函数 3.1 3.2 rollup SQL> --group by 作用于多列,先按照第一列进行分组,如果相同,按照第 ...

  3. Oracle 数据库常用操作语句大全

    原文:Oracle 数据库常用操作语句大全 一.Oracle数据库操作 1.创建数据库      create database databasename 2.删除数据库      drop data ...

  4. [oracle] Oracle存储过程里操作BLOB的字节数据的办法,例如写入32位整数

    作者: zyl910 一.缘由 BLOB是指二进制大对象,也就是英文Binary Large Object的缩写. 在很多时候,我们是通过其他编程语言(如Java)访问BLOB的字节数据,进行字节级的 ...

  5. java 操作oracle 源码_java对oracle的常用操作示例源码

    将做工程过程重要的代码片段做个收藏,下面资料是关于java对oracle的常用操作示例的代码. import java.sql.Connection; import java.sql.DriverMa ...

  6. python查询oracle数据库_python针对Oracle常见查询操作实例分析

    本文实例讲述了python针对Oracle常见查询操作.分享给大家供大家参考,具体如下: 1.子查询(难): 当进行查询的时候,发现需要的数据信息不明确,需要先通过另一个查询得到, 此查询称为子查询: ...

  7. oracle跨数据库用户操作,ORACLE跨数据库操作,DBLINK的使用

    ORACLE跨数据库操作,DBLINK的使用 前几天帮一个朋友弄ORACLE跨数据库的操作,共享下具体的操作流程: 一.不同IP的数据库(DBLINK) 本地数据库ip 10.56.7.26 远程数据 ...

  8. 请教怎么查询ORACLE的历史操作记录!

    请问如何查询ORACLE的历史操作记录!!!!! 我用的是linux oracle 11g r2,想查一下前几天的数据库的历史操作记录,例如对表的insert,delete,update等等的操作记录 ...

  9. cx_oracle主备服务器,怎么在Python中使用cx_Oracle模块对Oracle数据库进行操作

    怎么在Python中使用cx_Oracle模块对Oracle数据库进行操作 发布时间:2021-03-17 16:32:34 来源:亿速云 阅读:67 作者:Leah 本篇文章为大家展示了怎么在Pyt ...

最新文章

  1. 数据结构(04)— 线性顺序表实战
  2. MySQL性能与磁盘读写的关系及优化策略
  3. cocos2dx-2.2.0的开始
  4. CListCtrl的用法总结
  5. 1008 Elevator (20 分)_13行代码AC
  6. kafka maven没有下载_Kafka 系列(三)——Kafka 生产者详解
  7. jni jvm 内存泄漏_解析Java的JNI编程中的对象引用与内存泄漏问题
  8. [转]JS部分通用函数
  9. 关于Python ord()和chr()返回ASCII码和Unicode码的看法
  10. 动态打字效果 html,html5 svg酷炫的打字动画特效
  11. OpenShift Security (6) - 用网络图可视化网络访问策略
  12. “ Value of nested property ‘teacher‘ is null”内部嵌套对象为空的问题
  13. “写代码三年月薪不到一万是不是很失败?”
  14. 小程序Git版本管理
  15. 蒙版操作—快速蒙版扣图
  16. curl 命令详解(超详细)
  17. Linux下安装YASM--编译x264
  18. 杭州再发力!余杭又添一区块链产业园,携手巴比特欲打造创新应用示范区
  19. 拼团系统开发的亮点与核心功能
  20. 我是谁,读《薇娅:人生是用来改变的》有感

热门文章

  1. 仿权重8高收录面包网pc+手机苹果cmsv8影视网站含迅雷下载N430模板
  2. 银行数据仓库体系实践_【实战剖析】某国际性商业银行的数据仓库建设经验分享...
  3. linux如何通过parted命令对磁盘进行分区
  4. 使用Blinker+ESP8266接入天猫精灵
  5. C++ LinuxWebServer 2万7千字的面经长文(上)
  6. Android蓝牙手柄摇杆 十字按键监听手机focus焦点
  7. 爬虫笔记——东方财富科创板数据爬取(requests方法)
  8. c语言以字符输出88,C语言88案例完整版
  9. 住房教育当从娃娃抓起
  10. 【我的Android进阶之旅】 高效的设计稿标注及测量工具Markman介绍