作者:Bobby0322

CUBE 和 ROLLUP 之间的区别在于:
CUBE 运算符生成的结果集是多维数据集。多维数据集是事实数据的扩展,事实数据即记录个别事件的数据。扩展建立在用户打算分析的列上。这些列被称为维。多维数据集是一个结果集,其中包含了各维度的所有可能组合的交叉表格。 
CUBE 运算符在 SELECT 语句的 GROUP BY 子句中指定。该语句的选择列表应包含维度列和聚合函数表达式。GROUP BY 应指定维度列和关键字 WITH CUBE。结果集将包含维度列中各值的所有可能组合,以及与这些维度值组合相匹配的基础行中的聚合值。

CUBE 生成的结果集显示了所选列中值的所有组合的聚合。
ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。
GROUPING:
当用 CUBE 或 ROLLUP 运算符添加行时,附加的列输出值为1,当所添加的行不是由 CUBE 或 ROLLUP 产生时,附加列值为0。

需要注意的是,使用有 WITH ROLLUP 子句的 GROUP BY 语句时,不能再使用 ORDER BY 语句对结果集进行排序,如果对返回的结果顺序不满意,需要应用程序获得结果后在程序中进行排序。
示例:

DECLARE @T TABLE(名称 VARCHAR(10) ,出版商 VARCHAR(10) ,价格1 INT ,价格2 INT)
INSERT  @TSELECT  'a' ,'北京' ,11 ,22UNION ALLSELECT  'a' ,'四川' ,22 ,33UNION ALLSELECT  'b' ,'四川' ,12 ,23UNION ALLSELECT  'b' ,'北京' ,10 ,20UNION ALLSELECT  'b' ,'昆明' ,20 ,30SELECT  *
FROM    @T       --WITH CUBE
SELECT  名称 ,出版商 ,SUM(价格1) AS 价格1 ,SUM(价格2) AS 价格2 ,GROUPING(名称) AS CHECK名称 ,GROUPING(出版商) AS CHECK出版商
FROM    @T
GROUP BY 名称 ,出版商WITH CUBE--WITH ROLLUP
SELECT  名称 ,出版商 ,SUM(价格1) AS 价格1 ,SUM(价格2) AS 价格2
FROM    @T
GROUP BY 名称 ,出版商WITH ROLLUP   --GROUPING
SELECT  CASE WHEN ( GROUPING(名称) = 1 ) THEN '总计'ELSE ISNULL(名称, 'UNKNOWN')END AS 名称 ,CASE WHEN ( GROUPING(出版商) = 1 ) THEN '小计'ELSE ISNULL(出版商, 'UNKNOWN')END AS 出版商 ,SUM(价格1) AS 价格1 ,SUM(价格2) AS 价格2
FROM    @T
GROUP BY 名称 ,出版商WITH ROLLUP 

WITH CUBE 结果集:

WITH ROLLUP 结果集:

GROUPING结果集:

转载于:https://www.cnblogs.com/lxl57610/p/7402061.html

WITH ROLLUP、WITH CUBE、GROUPING语句的应用相关推荐

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

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

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

    SQLSERVER中的ALL.PERCENT.CUBE关键字.ROLLUP关键字和GROUPING函数 先来创建一个测试表 1 USE [tempdb] 2 GO 3 4 CREATE TABLE # ...

  3. oracle group by 两项,Oracle中group by 的扩展函数rollup、cube、grouping sets

    Oracle的group by除了基本使用方法以外,还有3种扩展使用方法,各自是rollup.cube.grouping sets.分别介绍例如以下: 1.rollup 对数据库表emp.如果当中两个 ...

  4. mysql group by cube_SparkSQL 中group by、grouping sets、rollup和cube方法详解

    在平时的工作中,经常有按照不同维度筛选和统计数据的需求.拿视频会员订单数据来说吧,运营人员要查看深圳市的成功下单数或则深圳市某一种产品的成功下单数或者某一种产品的所有成功下单数时,每天的订单数又很大, ...

  5. oracle 分组统计效率,Oracle 分组求和函数(rollup、cube、grouping sets)

    文章目录 1 场景 1.1 概念 1.2 思维导图 1.3 数据准备 2 知识点小结 2.1 group by 2.2 grouping sets:单独分组 2.3 rollup:累计累加 2.4 c ...

  6. group by后面加rollup、cube、grouping sets分别代表什么含义

    group by 众所周知,group by 语法是对给定的字段进行分组统计,最后得到一个分组统计数据. 满足以下要求:select语句中的字段必须为分组字段或者聚合函数(如:sum() .max() ...

  7. group by 字句的扩展+rollup字句+cube字句+grouping()函数

    1rollup字句 rollup字句扩展group by字句,为每一个分组返回一条小计记录,并为全部分组返回总计 列如:rollup字句获取每个部门的工资总计 select d.dname,sum(e ...

  8. mysql group by cube_SQL Server 之 GROUP BY、GROUPING SETS、ROLLUP、CUBE

    1.创建表 Staff CREATE TABLE [dbo].[Staff]([ID] [int] IDENTITY(1,1) NOT NULL,[Name] [varchar](50) NULL,[ ...

  9. mysql聚合函数rollup和cube

    转:https://blog.csdn.net/liuxiao723846/article/details/48970443 一.with rollup: with rollup 通常和group b ...

最新文章

  1. Texlive安装与环境变量配置
  2. ES6-let const
  3. 一周一论文(翻译)——[VLDB 18] Chi:分布式流处理系统下可扩展的、可编程的控制计划模块
  4. 网络编程中设计并发服务器,使用多进程 与 多线程 ,请问有什么区别?
  5. STL的tuple集合对象
  6. 2018年第九届省赛C/C++A组第3题——乘积尾零
  7. golang 标准库间依赖的可视化展示
  8. [编程入门]猴子吃桃的问题
  9. Java中的使用了未经检查或不安全的操作
  10. 如何在虚拟机上安装TrueNAS系统
  11. android 文字垂直居中,前端常见问题——安卓文本无法垂直居中
  12. php socket邮箱,phpsocket.io php版本的socket.io
  13. Chrome 科研神器!去谷歌学术搜到文章,代码链接就能自动展示
  14. win7自动锁定计算机快捷键,两种方法教你锁定Win7系统电脑计算机快捷键
  15. 深度学习平台-百度飞桨
  16. 宽带和流量是分开的吗_带宽与宽带的区别。
  17. react使用二级(多级)路由(rout)实现局部跳转
  18. java开发实战小参考常见问题及处理
  19. uni-app 启动广告页
  20. MySQL Cluster2个数据节点压力测试--mysqlslap工具压400W写

热门文章

  1. apriori算法python_清华学霸亲测有效,每日自学两小时Python,学完就能做项目
  2. 安卓最好的浏览器_今日软件 | AI一键抠图、隐私保护工具、全能下载器、安卓启动器、茄子快传、迅雷、批量字符替换、傲游浏览器、全局负一屏...
  3. git推送出现fatal: the remote end hung up unexpectedly
  4. MYSQL5.7离线安装报libnuma.so.1()(64bit) is needed by mysql-community-server-5.7.29-1.el7.x86_64
  5. 《Kotlin从零到精通Android开发》资源下载和内容勘误
  6. Spark dataframe【KV格式】模拟实现Map操作
  7. Oracle 10g DG 数据文件迁移
  8. Sublime text3的安装配置
  9. Web服务器的配置与管理(1) IIS的安装与基本设置
  10. GCD(Grand Central Dispatch)和Block 使用-浅析