UNION 等集合操作符:
UNION 等以第一个 SELECT 的 列明 作为 整个结果集的列明,整个结果集 唯一认可的 唯一逻辑处理阶段 是 ORDER BY
这个意思是说 只有 ORDER BY 是对整个结果集作用的,其它都操作都作用在 UINON 两侧的 子集合中。
EXCEPT 操作符也是 提出了重复值的
此外,它认为两个 null 值是相等的,
而 NOT EXISTS 认为两个 null 值不相等,
集合操作符的 优先级是 INTERSECT 最大,其它都一样
CTE 递归 是个 重点, 分为 单个 定位点成员,单个递归成员,多个定位点,多个递归成员
1. 单个 定位点成员,单个递归成员
//todo
2. 多个定位点,多个递归成员
// todo
特别注意 只有一个维度去观看的时候,WITH CUBE 或者 WITH ROLLUP 的结果是一样的。
而下面 例子中的 WITH CUBE 或者 WITH ROLLUP 语句都会被 GROUP BY 后面的 CUBE(col1,col2) 或者 ROLLUP(col1,col2) 所替代,因为这种更加符合 ISO 标准些
IF object_id('dbo.Inventory','U') IS NOT NULL
DROP TABLE dbo.Inventory
GO
CREATE TABLE Inventory(
Item varchar(5),
Color char(4),
Qty int
)
INSERT INTO dbo.Inventory
VALUES('桌子','蓝色',2),
('桌子','红色',1),
('桌子','蓝色',3),
('椅子','蓝色',4),
('椅子','红色',6),
('椅子','红色',5)
select Item,Color,SUM(Qty) AS Sum_Qty from dbo.Inventory GROUP BY Item,Color WITH CUBE -- Group by Item,Color WITH CUBE 也可以替换为 Group by CUBE(Item,Color) 以下同理

select Item,Color,SUM(Qty) AS Sum_Qty from dbo.Inventory GROUP BY Item,Color with rollup
重点:
区分 空值与汇总值
使用 Grouping(Item) 或者 Grouping(Color) 函数 去区分
当 Grouping 函数返回 1 时候证明是汇总的,否则 就是真正的 null 值
1. Cube ------======---
select
CASE WHEN Grouping(Item) = 1
Then '汇总' ELSE ISNULL(Item,'未知')
End as Item,
CASE WHEN Grouping(Color) = 1 Then '汇总' ELSE ISNULL(Color,'未知') End as Item,
SUM(Qty) AS Sum_Qty
from dbo.Inventory GROUP BY Item,Color with cube
2. 对于 ROLLUP ------======
select
CASE WHEN Grouping(Item) = 1
Then '汇总' ELSE ISNULL(Item,'未知')
End as Item,
CASE WHEN Grouping(Color) = 1 Then '汇总' ELSE ISNULL(Color,'未知') End as Item,
SUM(Qty) AS Sum_Qty
from dbo.Inventory GROUP BY Item,Color with rollup
3.怎样返回指定维度的 汇总:
1。 使用派生表 然后 对派生表 做 where 条件筛选
即 把上面汇总的 select 查询语句做成一个 子查询数据集
然后从这个 数据集中 筛选 Item is not null and Color is null 诸如此类的。
2. 使用GROUPING SETS 指定仅需要获取所需的分组
不带 null, null 这种情况的:
带上 null , null 这种情况的
UNION 等集合操作符:
UNION 等以第一个 SELECT 的 列明 作为 整个结果集的列明,整个结果集 唯一认可的 唯一逻辑处理阶段 是 ORDER BY
这个意思是说 只有 ORDER BY 是对整个结果集作用的,其它都操作都作用在 UINON 两侧的 子集合中。
EXCEPT 操作符也是 提出了重复值的
此外,它认为两个 null 值是相等的,
而 NOT EXISTS 认为两个 null 值不相等,
集合操作符的 优先级是 INTERSECT 最大,其它都一样
CTE 递归 是个 重点, 分为 单个 定位点成员,单个递归成员,多个定位点,多个递归成员
1. 单个 定位点成员,单个递归成员
//todo
2. 多个定位点,多个递归成员
// todo
特别注意 只有一个维度去观看的时候,WITH CUBE 或者 WITH ROLLUP 的结果是一样的。
而下面 例子中的 WITH CUBE 或者 WITH ROLLUP 语句都会被 GROUP BY 后面的 CUBE(col1,col2) 或者 ROLLUP(col1,col2) 所替代,因为这种更加符合 ISO 标准些
IF object_id('dbo.Inventory','U') IS NOT NULL
DROP TABLE dbo.Inventory
GO
CREATE TABLE Inventory(
Item varchar(5),
Color char(4),
Qty int
)
INSERT INTO dbo.Inventory
VALUES('桌子','蓝色',2),
('桌子','红色',1),
('桌子','蓝色',3),
('椅子','蓝色',4),
('椅子','红色',6),
('椅子','红色',5)
select Item,Color,SUM(Qty) AS Sum_Qty from dbo.Inventory GROUP BY Item,Color WITH CUBE -- Group by Item,Color WITH CUBE 也可以替换为 Group by CUBE(Item,Color) 以下同理

select Item,Color,SUM(Qty) AS Sum_Qty from dbo.Inventory GROUP BY Item,Color with rollup
重点:
区分 空值与汇总值
使用 Grouping(Item) 或者 Grouping(Color) 函数 去区分
当 Grouping 函数返回 1 时候证明是汇总的,否则 就是真正的 null 值
1. Cube ------======---
select
CASE WHEN Grouping(Item) = 1
Then '汇总' ELSE ISNULL(Item,'未知')
End as Item,
CASE WHEN Grouping(Color) = 1 Then '汇总' ELSE ISNULL(Color,'未知') End as Item,
SUM(Qty) AS Sum_Qty
from dbo.Inventory GROUP BY Item,Color with cube
2. 对于 ROLLUP ------======
select
CASE WHEN Grouping(Item) = 1
Then '汇总' ELSE ISNULL(Item,'未知')
End as Item,
CASE WHEN Grouping(Color) = 1 Then '汇总' ELSE ISNULL(Color,'未知') End as Item,
SUM(Qty) AS Sum_Qty
from dbo.Inventory GROUP BY Item,Color with rollup
3.怎样返回指定维度的 汇总:
1。 使用派生表 然后 对派生表 做 where 条件筛选
即 把上面汇总的 select 查询语句做成一个 子查询数据集
然后从这个 数据集中 筛选 Item is not null and Color is null 诸如此类的。
2. 使用GROUPING SETS 指定仅需要获取所需的分组
不带 null, null 这种情况的:
带上 null , null 这种情况的

- 8第八章CTE递归及分组汇总高级部分(多维数据集)(转载)
8第八章CTE递归及分组汇总高级部分(多维数据集) 这里贴图太麻烦...算了 UNION 等集合操作符: UNION 等以第一个 SELECT 的 列明 作为 整个结果集的列明,整个结果集 唯一认可 ...
- SQL Server中公用表表达式 CTE 递归的生成帮助数据,以及递归的典型应用
本文出处:http://www.cnblogs.com/wy123/p/5960825.html 我们在做开发的时候,有时候会需要一些帮助数据,必须需要连续的数字,连续间隔的时间点,连续的季度日期等等 ...
- MongoDB分组汇总操作,及Spring data mongo的实现
转载请在页首注明作者与出处 一:分组汇总 1.1:SQL样例 分组汇总的应用场景非常多,比如查询每个班级的总分是多少,如果用关系形数据库,那么sql是这样子的 ),class from score g ...
- TSql CTE 递归原理探究
CTE是如何进行递归的?产生递归的条件有三个,分别是 初始值 自身调用自身 结束递归的条件 1,示例代码 ;with cte as ( as jd union all as jd from cte ) ...
- gridpanel分组汇总
[ExtJS5学习笔记]第三十节 sencha extjs 5表格gridpanel分组汇总 2015-05-31 86 本文地址:http://blog.csdn.net/sushengmi ...
- Grid分组汇总
Ext.onReady(function () { Ext.define('personInfo', { extend: 'Ext. ...
- SQL 递归查询,意淫CTE递归的执行步骤
今天用到了sql的递归查询.递归查询是CTE语句with xx as(....)实现的. 假如表Category数据如下. 我们想查找机枪这个子分类极其层次关系(通过子节点,查询所有层级节点).以下是 ...
- tidyverse|数据分析常规操作-分组汇总(sumamrise+group_by)
| 本文首发于 “生信补给站” https://mp.weixin.qq.com/s/tQt0ezYJj3H7x3aWZmKVEQ 使用tidyverse进行简单的数据处理: 盘一盘Tidyverse ...
- 高级Linux运维工程师必备技能(扫盲篇)
高级Linux运维工程师必备技能(扫盲篇) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在了解文件系统之前,我们要学习一下磁盘存储数据的方式,大家都知道文件从内存若要持久化存储的 ...
随机推荐
- React入门1
React教程 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...
- 【转】Fragment和Activity
原文网址:http://www.cnblogs.com/mengdd/archive/2013/01/11/2856374.html Fragment和Activity的交互 一个Fragment的实 ...
- 【转】Android中设置TextView的颜色setTextColor--代码中设置字体颜色
原文网址:http://www.cnblogs.com/myphoebe/archive/2012/01/06/2314728.html android中设置TextView的颜色有方法setText ...
- sort()函数与qsort()函数及其头文件
sort()函数与qsort()函数及其头文件 sort()函数是C++中的排序函数其头文件为:#include<algorithm>头文件: qsort()是C中的排序函数,其头文件为: ...
- ExtJS练手
Ext.onReady(function () { //给grid添加数据源 var store = new Ext.data.JsonStore({ root: 'rows', totalPrope ...
- 浅谈pageobject模式
先来看两段代码 代码1: package com.zlshuo.selenium.nonaming.pageobject; /** * @author leshuo * @version 2014年5 ...
- (DT系列四)驱动加载中, 如何取得device tree中的属性
本文以At91rm9200平台为例,从源码实现的角度来分析驱动加载时,Device tree的属性是如何取得的.一:系统级初始化DT_MACHINE_START 主要是定义"struct m ...
- 重新安装phpMyAdmin无法运行的解决一例
重新下载phpMyAdmin,并解压覆盖老的版本. 浏览器打开显示 http 500 查看服务器日志显示主要如下: PHP Fatal error: PMA\\libraries\\ThemeMana ...
- 应用程序无法正常启动0xc0150002 解决方式
我也遇到过此问题,解决的方法: 方案一: 在项目的"属性|配置属性|链接器|常规"中的"启用增量链接"选择"否".此方法阻断了问题产 ...
- Eclipse快捷键调试
Eclipse中有如下一些和运行调试相关的快捷键Ctrl+Shift+B:在当前行设置断点或取消设置的断点 F11:调试最后一次执行的程序 Ctrl+F11:运行最后一次执行的程序F5:跟踪到 ...