1.建立测试专用数据;

if object_id('TESTDB') is not null drop table TESTDB

create table TESTDB(A varchar(8), B INT)

insert into TESTDB

select 'A1', 6 union all

select 'A1', 8 union all

select 'A1', 67 union all

select 'A2', 67 union all

select 'A2', 4 union all

select 'A2', 112 union all

select 'A3', 90 union all

此处:可以用SELECT 与 UNION联合的插入方法,方便快捷,前提是插入数据的列与表的列相同;

2.ROW_NUMBER() 使用

ROW_NUMBER()的使用,主要是对数据进行分组时,对组内的数据进行排序,对临时表的内容进行测试,语句如下:

SELECT * ,ROW_NUMBER() OVER( PARTITION BY A ORDER BY B DESC) NUM FROM TESTDB GROUP BY A,B 

执行结果如下:

分析:语句根据A、B进行分组,分组后内部按照A进行分区,B列进行排序,增添NUM计数信息;

3.ROLLUP 与 CUBE 的对比

首先:对于进行ROULLUP排序;

SELECT * ,ROW_NUMBER() OVER( PARTITION BY A ORDER BY B DESC) NUM FROM TESTDB GROUP BY A,B WITH ROLLUP

分析:与无ROLLUP对比,多出来了四行数据,四行数据分别为:

1).单独对A进行分组,忽略B对其用NULL代替;

2)忽略A、B进行分组,即多出一行空值;

以此类推的话:如果是三列A、B、C进行ROLLUP的话,应该是先对A进行分组,再对A、B分组,最后是A、B、C均不考虑就是空值一行,随后测试猜想;对表进行列的增加;

create table TESTDB(A varchar(8), B INT,C varchar(8))

insert into TESTDB

select 'A1', 6,'A' union all

select 'A1', 8,'B' union all

select 'A1', 67,'C' union all

select 'A2', 67,'A' union all

select 'A2', 4 ,'B' union all

select 'A2', 112, 'C' union all

select 'A3', 90, 'D' union all
select 'A3', 6,'D'
SELECT * FROM TESTDB GROUP BY A,B,C WITH ROLLUP

猜想正确,总结出规律为:分别对group分组的列按照顺序,依次组合进行分组,A、B、C则为三个均不考虑,只考虑A,考虑A、B,考虑A、B、C排序即为ROLLUP 的内在逻辑。

4.CUBE的使用

对两列时进行CUBE排序与ROLLUP进行对比

SELECT * ,ROW_NUMBER() OVER( PARTITION BY A ORDER BY B DESC) NUM FROM TESTDB GROUP BY A,B WITH CUBE

对比得知:CUBE排序方式为

GROUP BY   A

GROUP BY B

GROUP BY A、B

NULL行

ROLLUP为:

NULL行

GROUP BY   A

GROUP BY A、B

CUBE要比ROLLUP分别排序的全,内部元素均会一一排序;ROLLUP则为顺序排序。

SQL SEVER (ROLLUP与CUBE,ROW_NUMBER())使用方法的更多相关文章

  1. sql sever跨数据库复制数据的方法【转】

    1,用Opendatasource系统函数 详细的用法已经注释在sql代码中了.这个是在sqlserver到sqlserver之间的倒数据.2005,2008,2012应该都是适用的. --从远程服务 ...

  2. sql sever跨数据库复制数据的方法

    1,用Opendatasource系统函数 详细的用法已经注释在sql代码中了.这个是在sqlserver到sqlserver之间的倒数据.2005,2008,2012应该都是适用的. --从远程服务 ...

  3. sql sever 创建临时表的两种方法

    创建临时表       方法一:     create table #临时表名( 字段1 约束条件,             字段2 约束条件,                  .....)     ...

  4. 转:GROUPING SETS、ROLLUP、CUBE

    转:http://blog.csdn.net/shangboerds/article/details/5193211 大家对GROUP BY应该比较熟悉,如果你感觉自己并不完全理解GROUP BY,那 ...

  5. GROUPING SETS、ROLLUP、CUBE

    大家对GROUP BY应该比较熟悉,如果你感觉自己并不完全理解GROUP BY,那么本文不适合你.还记得当初学习SQL的时候,总是理解不了GROUP BY的作用,经过好长时间才终于明白GROUP BY ...

  6. java连接到sql sever 2008_java基础学习

    (sql sever 2008跟sql sever 2005装载JDBC驱动的方法是一样的) 一.加载驱动的文字教程 1.准备相关的软件(Eclipse除外,开源软件可以从官网下载) <1> ...

  7. SQL Server 之 GROUP BY、GROUPING SETS、ROLLUP、CUBE

    1.创建表 Staff CREATE TABLE [dbo].[Staff]( ,) NOT NULL, ) NULL, ) NULL, ) NULL, [Money] [int] NULL, [Cr ...

  8. [实战经验][SQL Sever 2008 (R)解决方法累积

    SQL Sever 2008 (R)的安装图解及配置 http://www.soft6.com/v9/2009/jcsj_1030/115821.html 产品密钥,选择“输入产品密钥”,输入:PTT ...

  9. SQL Server ->> GROUPING SETS, CUBE, ROLLUP, GROUPING, GROUPING_ID

    在我们制作报表的时候常常需要分组聚合.多组聚合和总合.如果通过另外的T-SQL语句来聚合难免性能太差.如果通过报表工具的聚合功能虽说比使用额外的T-SQL语句性能上要好很多,不过不够干脆,还是需要先生 ...

随机推荐

  1. Spring Boot项目在Mac下使用Maven启动时碰到的神奇问题:Unregistering JMX-exposed beans on shutdown

    错误如下: ➜ springboottest1 mvn spring-boot:run [INFO] Scanning for projects... [INFO] [INFO] ---------- ...

  2. HDU 4507

    数位DP. 一般是利用DFS来求数位DP了,结合了记忆化搜索.设dp[i][j][k]为前i位,并且前i位的数位和mod7为j,前i位的数字的表示数字值mod7.为什么可以这样呢?因为继续DFS下去, ...

  3. [寒江孤叶丶的Cocos2d-x之旅_32]微信输入框风格的IOS平台的EditBox

    原创文章,欢迎转载.转载请注明:文章来自[寒江孤叶丶的Cocos2d-x之旅系列] 博客地址:http://blog.csdn.net/qq446569365 偶然看到一个游戏注冊账号时候,输入框是弹 ...

  4. hdu1018--斯特灵公式

    斯特灵公式 Wiki http://zh.wikipedia.org/wiki/斯特林公式 /** \brief hdu 1018 * * \param date 2014/7/24 * \param ...

  5. S 禁止F12和右键操作控制台,兼容各浏览器

    document.oncontextmenu = function () { return false; };         document.onkeydown = function () {   ...

  6. 虚拟机window7与主机之间文件复制设置

    一.需要安装VMware Tools 选中虚拟机>虚拟机>安装VMware Tools 一直点击下一步直至完成 二.设置文件共享 选定实体机需要共享给虚拟机的文件夹,并为该共享起一个名称. ...

  7. 【待解决】使用JUnit时报错java.lang

    编写selenium自动化代码,代码逻辑应该都没有错,运行时老是报如下错误 java.lang.NoClassDefFoundError: org/json/JSONException 解决办法:导入 ...

  8. &quot;高可用方案工具包&quot; high availability toolkit 1.1

    "高可用方案工具包" high availability toolkit 1.1 公布了. version 1.1 新增了gossip protocol 的高可用HA方案应用. 项 ...

  9. WebP 文件及其编码解码工具(WebPconv)

    1. webp 文件 与JPEG相同,WebP 是一种有损压缩利用预测编码技术. WebP 是 Google 新推出的影像技术,它可让网页图档有效进行压缩,同时在质量相同的情况下,WebP 格式图像的 ...

  10. 给统计人讲Python(1)_科学计算库-Numpy

    本地代码是.ipynb格式的转换到博客上很麻烦,这里展示部分代码,了解更多可以查看我的git-hub:https://github.com/Yangami/Python-for-Statisticia ...