当我们在做报表统计的时候,很多时候需要用到‘合计’这个功能,比如我们想得到如下格式的报表:

这张表是按照deptno分组,然后按照deptno分组合计。rollup函数可以完美的解决这个问题。

1.建立一张t表:

create table T

(

  empno  NUMBER(4),

  ename  VARCHAR2(10),

  job    VARCHAR2(9),

  sal    NUMBER(7,2),

  comm   NUMBER(7,2),

  deptno NUMBER(2)

);

2.插入数据:

insert into t (EMPNO, ENAME, JOB, SAL, COMM, DEPTNO)

values (7844, 'TURNER', 'SALESMAN', 1500.00, 0.00, 30);

insert into t (EMPNO, ENAME, JOB, SAL, COMM, DEPTNO)

values (7499, 'ALLEN', 'SALESMAN', 1600.00, 300.00, 30);

insert into t (EMPNO, ENAME, JOB, SAL, COMM, DEPTNO)

values (7521, 'WARD', 'SALESMAN', 1250.00, 500.00, 30);

insert into t (EMPNO, ENAME, JOB, SAL, COMM, DEPTNO)

values (7566, 'JONES', 'MANAGER', 2975.00, 100.00, 20);

insert into t (EMPNO, ENAME, JOB, SAL, COMM, DEPTNO)

values (7654, 'MARTIN', 'SALESMAN', 1250.00, 1400.00, 30);

insert into t (EMPNO, ENAME, JOB, SAL, COMM, DEPTNO)

values (7698, 'BLAKE', 'MANAGER', 2850.00, 100.00, 30);

insert into t (EMPNO, ENAME, JOB, SAL, COMM, DEPTNO)

values (7782, 'CLARK', 'MANAGER', 2450.00, 100.00, 10);

insert into t (EMPNO, ENAME, JOB, SAL, COMM, DEPTNO)

values (7788, 'SCOTT', 'ANALYST', 3000.00, 100.00, 20);

insert into t (EMPNO, ENAME, JOB, SAL, COMM, DEPTNO)

values (7839, 'KING', 'PRESIDENT', 5000.00, 100.00, 10);

insert into t (EMPNO, ENAME, JOB, SAL, COMM, DEPTNO)

values (7876, 'ADAMS', 'CLERK', 1100.00, 100.00, 20);

insert into t (EMPNO, ENAME, JOB, SAL, COMM, DEPTNO)

values (7900, 'JAMES', 'CLERK', 950.00, 100.00, 30);

insert into t (EMPNO, ENAME, JOB, SAL, COMM, DEPTNO)

values (7902, 'FORD', 'ANALYST', 3000.00, 100.00, 20);

insert into t (EMPNO, ENAME, JOB, SAL, COMM, DEPTNO)

values (7934, 'MILLER', 'CLERK', 1300.00, 100.00, 10);

commit;

3.使用rollup函数

select empno, ename, sum(sal) as sal, sum(comm) as comm, deptno

from t

group by rollup(deptno, (empno, ename))

having grouping(deptno) = 0;

The End!

【Oracle】rollup函数的更多相关文章

  1. ORACLE rollup函数

    rollup函数应用场景: 主要使用在 分组中,将每个分组求汇总值(就是小计),最后再讲所有值(除去小计)求和(就是合计) 当然,使用union 也可以达到同样的效果.先将需要查询的分组查出来,再un ...

  2. [转]【ROLLUP】Oracle分组函数之ROLLUP魅力

    原创:http://blog.itpub.net/519536/viewspace-610995 本文通过演示给出Oracle ROLLUP分组函数的用法,体验一下Oracle在统计查询领域中的函数魅 ...

  3. Mysql,Oracle使用rollup函数完成行列统计

    时间 2014-02-25 00:05:38  ITeye-博客 原文  http://53873039oycg.iteye.com/blog/2021445 主题 MySQLOracle数据库 昨天 ...

  4. Oracle分组函数之ROLLUP用法

    rollup函数 本博客简单介绍一下oracle分组函数之rollup的用法,rollup函数常用于分组统计,也是属于oracle分析函数的一种 环境准备 create table dept as s ...

  5. Oracle分组函数cube VS rollup

    分析函数cube和rollup魅力首先请看下面例子1)创建表create table group_test (group_id int, job varchar2(10), name varchar2 ...

  6. Oracle分析函数——函数列表

    --------------聚合函数 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算 ...

  7. 【转】【CUBE】Oracle分组函数之CUBE魅力

    http://blog.itpub.net/519536/viewspace-610997/ Oracle的CUBE与ROLLUP功能很相似,也是在数据统计分析领域的一把好手.  关于ROLLUP的查 ...

  8. Oracle分组函数之CUBE魅力

    Oracle的CUBE与ROLLUP功能很相似,也是在数据统计分析领域的一把好手. 关于ROLLUP的查询统计功能请参考文章<Oracle分组函数之ROLLUP魅力>(http://www ...

  9. oracle 高级函数2

    原 oracle 高级函数 2017年08月17日 16:44:19 阅读数:1731 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013278 ...

随机推荐

  1. Linux之日志管理

    日志介绍日志配置日志管理远程日志基于MYSQL的日志 日志介绍日志:历史事件:时间,地点,人物,事件日志级别:事件的关键性程度,Loglevel系统日志服务:sysklogd :CentOS 5之前版 ...

  2. C#学习笔记_13_静态类&Sealed&运算符重载&抽象类

    13_静态类&Sealed&运算符重载&抽象类 静态类 由static修饰的类就是静态类 特点: 静态类不能实例化对象 静态类中不允许写非静态的成员 静态类只能由一个父类Obj ...

  3. odoo 权限杂记

    最近做一个任务督办模块,涉及到一些权限问题,折磨了几天,终于是解决了. 任务表中关联了hr_employee,分别有默认字段创建人,Many2one的发布人.监督人和Many2many类型的主责人,这 ...

  4. Codeforces 918C/917A - The Monster

    传送门:http://codeforces.com/contest/918/problem/C 一个括弧串由字符‘(’和‘)’组成.一个正确的串可被递归地定义,定义如下: ①空串e是一个正确的串: ② ...

  5. 【codeforces 515D】Drazil and Tiles

    [题目链接]:http://codeforces.com/contest/515/problem/D [题意] 给你一个n*m的格子; 然后让你用1*2的长方形去填格子的空缺; 如果有填满的方案且方案 ...

  6. OpenCV 基于超像素分割的图像区域选取方法及源码

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/51386993 工程源码GitHub: ...

  7. [bzoj3450]Tyvj1952 Easy[概率dp]

    和之前一样考虑这个音符时x还是o,如果是x,是否是新的连续一段,对答案的贡献是多少$(a^2-{(a-1)}^2)$,然后递推就可以了. #include <bits/stdc++.h> ...

  8. Monitor和Lock以及区别

    1.Monitor.Enter(object)方法是获取锁,Monitor.Exit(object)方法是释放锁,这就是Monitor最常用的两个方法,当然在使用过程中为了避免获取锁之后因为异常,致锁 ...

  9. fixed_date , 赋权技巧 ,procedure执行方式, PL/SQL注意的地方

    本文讨论4个知识点, 1. fixed_date参数 2. 赋权技巧 3. procedure执行的方式 4. PL/SQL中要注意的几个地方 fixed_date参数 客户想修改oracle的 系统 ...

  10. Homebrew 命令

    安装(需要 Ruby):ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" 搜索 ...