rollup&&cube
group by 擴展 rollup&&cube
--按job分組計算不同job的匯總工資
SELECT job, SUM (sal)
FROM emp
GROUP BY job
ORDER BY job;
--向rollup傳遞一列
SELECT job, SUM (sal)
FROM emp
GROUP BY ROLLUP (job)
ORDER BY job;
--向rollup傳遞多列,根據job小計
SELECT job, deptno, SUM (sal)
FROM emp
GROUP BY ROLLUP (job, deptno)
ORDER BY job, deptno;
--修改傳遞給rollup的列的位置,根據部門小計
SELECT deptno, job, SUM (sal)
FROM emp
GROUP BY ROLLUP (deptno, job)
ORDER BY deptno, job;
--rollup與其它聚合函數使用,任何聚合函數都可以和rollup一起使用
SELECT deptno, job, ROUND (AVG (sal), 2)
FROM emp
GROUP BY ROLLUP (deptno, job)
ORDER BY deptno, job;
--使用cube子句
SELECT deptno, job, SUM (sal)
FROM emp
GROUP BY CUBE (deptno, job)
ORDER BY deptno, job;
--cube改變順序
SELECT job, deptno, SUM (sal)
FROM emp
GROUP BY CUBE (job, deptno)
ORDER BY job, deptno;
--grouping 返回0 1
SELECT GROUPING (job), job, SUM (sal)
FROM emp
GROUP BY ROLLUP (job)
ORDER BY job;
--轉換grouping返回值為有意義的值
SELECT CASE GROUPING (job)
WHEN 1 THEN 'ALL JOBS'
ELSE job
END AS job,
SUM (sal)
FROM emp
GROUP BY ROLLUP (job)
ORDER BY SUM (sal);
--grouping多列
SELECT
CASE GROUPING (deptno) WHEN 1 THEN 40 ELSE deptno END AS deptno,
CASE GROUPING (job) WHEN 1 THEN 'ALL JOBS' ELSE job END AS job,
SUM (sal)
FROM emp
GROUP BY ROLLUP (deptno,job)
ORDER BY deptno,job;
--cube與grouping一起使用
SELECT
CASE GROUPING (deptno) WHEN 1 THEN 40 ELSE deptno END AS deptno,
CASE GROUPING (job) WHEN 1 THEN 'ALL JOBS' ELSE job END AS job,
SUM (sal)
FROM emp
GROUP BY cube (deptno,job)
ORDER BY deptno,job;
--使用grouping sets只顯示小計結果
SELECT deptno,job,
SUM (sal)
FROM emp
GROUP BY grouping sets (deptno,job)
ORDER BY deptno,job;
rollup&&cube的更多相关文章
- Oracle分析函数 — sum, rollup, cube, grouping用法
本文通过例子展示sum, rollup, cube, grouping的用法. //首先建score表 create table score( class nvarchar2(20), course ...
- SQL GROUP BY GROUPING SETS,ROLLUP,CUBE(需求举例)
实现按照不同级别分组统计 关于GROUP BY 中的GROUPING SETS,ROLLUP,CUBE 从需求的角度理解会更加容易些. 需求举例: 假如一所学校只有两个系, 每个系有两个专业, 每个专 ...
- GROUP BY中ROLLUP/CUBE/GROUPING/GROUPING SETS使用示例
oracle group by中rollup和cube的区别: Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句.CUBE ROLLUP 是用于统计数据的. 实验 ...
- [转]详解Oracle高级分组函数(ROLLUP, CUBE, GROUPING SETS)
原文地址:http://blog.csdn.net/u014558001/article/details/42387929 本文主要讲解 ROLLUP, CUBE, GROUPING SETS的主要用 ...
- 高级聚合函数rollup(),cube(),grouping sets()
rollup(),cube(),grouping sets() 上面这几个函数,是对group by分组功能做的功能扩展. a.rollup() 功能:在原结果基础上追加一行总合计记录 ...
- Oracle Group by+rollup+cube 的应用
首先我们创建一个示例表: Create table test_group (v_name varchar2(4) ,v_size varchar2(4) ,v_color varchar2(4) ,n ...
- PLSQL_基础系列02_分组函数GROUP BY / ROLLUP / CUBE(案例)
2014-11-30 Created By BaoXinjian
- oracle聚合函数及行专列,pivot rollup cube
1.原始数据 --方法-: --以单位分组,计算每类特殊情况的合计以及按照单位的小计数 with a as (SELECT b.szfz, case when tsqk is not null th ...
- SQLSERVER中的ALL、PERCENT、CUBE关键字、ROLLUP关键字和GROUPING函数
SQLSERVER中的ALL.PERCENT.CUBE关键字.ROLLUP关键字和GROUPING函数 先来创建一个测试表 USE [tempdb] GO )) GO INSERT INTO [#te ...
随机推荐
- BZOJ5006 THUWC2017随机二分图(概率期望+状压dp)
下称0类为单边,1类为互生边,2类为互斥边.对于一种匹配方案,考虑其出现的概率*2n后对答案的贡献,初始为1,如果有互斥边显然变为0,否则每有一对互生边其贡献*2.于是有一个显然的dp,即设f[S1] ...
- jdbc的封装(使用参数文件)
借鉴原CSDN作者yanzi1225627的一篇:http://blog.csdn.net/yanzi1225627/article/details/26950615 作者东西写的很好,自己用的时候进 ...
- Milk Patterns POJ - 3261(后缀数组+二分)
题意: 求可重叠的最长重复子串,但有一个限制条件..要至少重复k次 解析: 二分枚举k,对于连续的height 如果height[i] >= k 说明它们至少有k个元素是重复的,所以判断一下就好 ...
- CF 997E 解题报告
CF997E Good Subsegments 给你一个长度为\(n\)的排列 \(P\),定义一段子区间是好的,当且仅当这个子区间内的值构成了连续的一段.例如对于排列\(\{1,3,2\}\),\( ...
- Nginx web服务优化 (一)
1.Nginx基本安全优化 a.更改配置文件参数隐藏版本 编辑nginx.conf配置文件增加参数,实现隐藏Nginx版本号的方式如下.在nginx配置文件nginx.conf中的http标签段内加入 ...
- 在OpenShift上托管web.py应用
一.背景 最近在学习web.py,跟随官网的cookbook和code examples一路敲敲打打,在本地访问了无数遍http://0.0.0.0:8080/,也算是对web.py有了基本的认识.为 ...
- bzoj2589【 Spoj 10707】 Count on a tree II
题目描述 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v),你需要回答u xor lastans和v这两个节点间有多少种不同的点权.其中lastans是上一个询问的答案,初始为0,即第一 ...
- 微服务Kong(八)——代理参考
Kong侦听四个端口的请求,默认情况是: 8000:此端口是Kong用来监听来自客户端的HTTP请求的,并将此请求转发到您的上游服务.这也是本教程中最主要用到的端口. 8443:此端口是Kong监听H ...
- linux中awk工具的使用
awk是一个非常好用的数据处理工具.相较于sed常常一整行处理,awk则比较倾向于一行当中分成数个“字段”处理,awk处理方式如下: $ awk '条件类型1{动作1} 条件类型2{动作2} ...' ...
- win7,Ubuntu 12.04 双系统修改启动项顺序三方法
修改启动项顺序的三种方法 本文所涉及的方法都是在Ubuntu的安装时将引导加载程序grub安装在了整个硬盘(即MBR内),即开机以grub引导. 方法1在Ubuntu终端下输入:sudo mv /et ...