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的更多相关文章

  1. Oracle分析函数 — sum, rollup, cube, grouping用法

    本文通过例子展示sum, rollup, cube, grouping的用法. //首先建score表 create table score( class  nvarchar2(20), course ...

  2. SQL GROUP BY GROUPING SETS,ROLLUP,CUBE(需求举例)

    实现按照不同级别分组统计 关于GROUP BY 中的GROUPING SETS,ROLLUP,CUBE 从需求的角度理解会更加容易些. 需求举例: 假如一所学校只有两个系, 每个系有两个专业, 每个专 ...

  3. GROUP BY中ROLLUP/CUBE/GROUPING/GROUPING SETS使用示例

    oracle group by中rollup和cube的区别: Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句.CUBE ROLLUP 是用于统计数据的. 实验 ...

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

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

  5. 高级聚合函数rollup(),cube(),grouping sets()

       rollup(),cube(),grouping sets()   上面这几个函数,是对group by分组功能做的功能扩展. a.rollup()   功能:在原结果基础上追加一行总合计记录 ...

  6. Oracle Group by+rollup+cube 的应用

    首先我们创建一个示例表: Create table test_group (v_name varchar2(4) ,v_size varchar2(4) ,v_color varchar2(4) ,n ...

  7. PLSQL_基础系列02_分组函数GROUP BY / ROLLUP / CUBE(案例)

    2014-11-30 Created By BaoXinjian

  8. oracle聚合函数及行专列,pivot rollup cube

    1.原始数据 --方法-: --以单位分组,计算每类特殊情况的合计以及按照单位的小计数 with a as (SELECT b.szfz, case  when tsqk is not null th ...

  9. SQLSERVER中的ALL、PERCENT、CUBE关键字、ROLLUP关键字和GROUPING函数

    SQLSERVER中的ALL.PERCENT.CUBE关键字.ROLLUP关键字和GROUPING函数 先来创建一个测试表 USE [tempdb] GO )) GO INSERT INTO [#te ...

随机推荐

  1. .net mvc C#生成网页快照

    目标:调用某一网页,自动抓取整个页面为图片,并保存 public class WebSiteThumbnail { Bitmap m_Bitmap; string m_Url; public WebS ...

  2. 配置SSH Forward提升安全性

    目标 MacBook ---(SSH)---> BastionServer ---(SSH)---> RemoteServer   说明 BastionServer.RemoteServe ...

  3. Linux禁止root账户远程登录

    Linux系统中,root用户几乎拥有所有的权限,远高于Windows系统中的administrator用户权限.一旦root用户信息被泄露,对于我们的服务器来说将是极为致命的威胁.所以禁止root用 ...

  4. libuv 简单使用

    libuv 简单使用 来源:https://zhuanlan.zhihu.com/p/50497450 前序:说说为啥要研究libuv,其实在很久之前(大概2年前吧)玩nodejs的时候就对这个核心库 ...

  5. 【转】Microsoft Visio2010 如何画UML 图

    转载:http://sdoq19.blog.163.com/blog/static/1910392122012419103442292/ 1.在Microsoft Office2010中打开Micro ...

  6. Alpha 冲刺 —— 十分之五

    队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭鸭鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 协助测试的进行 测试项目运行的服务器环境 ...

  7. 远程桌面(RDP)上的渗透测试技巧和防御

      0x00 前言 在本文中,我们将讨论四种情况下的远程桌面渗透测试技巧方法.通过这种攻击方式,我们试图获取攻击者如何在不同情况下攻击目标系统,以及管理员在激活RDP服务时来抵御攻击时应采取哪些主要的 ...

  8. Activity的setResult方法

    Activity的setResult方法http://blog.csdn.net/dinglin_87/article/details/8970144 调用setResult()方法必须在finish ...

  9. 解题:POI 2009 Fire Extinguishers

    题面 洛谷数据非常水,建议去bzoj 我第一眼一看这不是那个POI2011的升级版吗(明明这个是2009年的,应该说那个是这个的弱化版,果然思想差不多. 因为$k$很小,可以考虑每个间隔距离来转移.我 ...

  10. bzoj 4871: [Shoi2017]摧毁“树状图”

    4871: [Shoi2017]摧毁“树状图” Time Limit: 25 Sec  Memory Limit: 512 MBSubmit: 53  Solved: 9[Submit][Status ...