SQL Server2008 程序设计 汇总 group by ,WITH ROLLUP , WITH CUBE,Grouping sets(..)

本文主要是介绍SQL Server2008 程序设计 汇总 group by ,WITH ROLLUP , WITH CUBE,Grouping sets(..),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

--SQL Server2008 程序设计 汇总 group by ,WITH ROLLUP  WITH CUBE
/********************************************************************************          
*主题:SQL Server2008 程序设计 汇总 group by ,WITH ROLLUP  WITH CUBE   
*说明:本文是个人学习的一些笔记和个人愚见          
*      有很多地方你可能觉得有异议,欢迎一起讨论          
*作者:Stephenzhou(阿蒙)          
*日期: 2012.12.5  
*Mail:szstephenzhou@163.com          
*另外:转载请著名出处。          
**********************************************************************************/    


上测试数据

 

 

IF OBJECT_ID('Inventory') is not null
drop table Inventory
go
create table Inventory(
Store varchar(2),
Item varchar(20),
Color varchar(10),
Quantity decimal 
)
insert into Inventory values('NY','Table','Blue',124)
insert into Inventory values('NJ','Table','Blue',100)
insert into Inventory values('NY','Table','Red',29)
insert into Inventory values('NJ','Table','Red',56)
insert into Inventory values('PA','Table','Red',138)
insert into Inventory values('NY','Table','Green',229)
insert into Inventory values('PA','Table','Green',304)
insert into Inventory values('NY','Chair','Blue',101)
insert into Inventory values('NJ','Chair','Blue',22)
insert into Inventory values('NY','Chair','Red',21)
insert into Inventory values('NJ','Chair','Red',10)
insert into Inventory values('PA','Chair','Red',136)
insert into Inventory values('NJ','Sofa','Green',2)


  --一般的group by

 

select Item,Color,SUM(Quantity) as TotalQuantity,COUNT(Store) as Stores 
from Inventory 
group by  Item,Color 
order by Item,Color
/*
Item                 Color      TotalQuantity                           Stores
-------------------- ---------- --------------------------------------- -----------
Chair                Blue       123                                     2
Chair                Red        167                                     3
Sofa                 Green      2                                       1
Table                Blue       224                                     2
Table                Green      533                                     2
Table                Red        223                                     3
(6 行受影响)
*/


 

 GROUP BY   .. WITH ROLLUP

多了4个rollup行

 

 select Item,Color,SUM(Quantity) as TotalQuantity,COUNT(Store) as Stores 
from Inventory 
group by  Item,Color WITH ROLLUP --group by rollup(item,color)
order by Item,Color
/*
Item                 Color      TotalQuantity                           Stores
-------------------- ---------- --------------------------------------- -----------
NULL                 NULL       1272                                    13
Chair                NULL       290                                     5
Chair                Blue       123                                     2
Chair                Red        167                                     3
Sofa                 NULL       2                                       1
Sofa                 Green      2                                       1
Table                NULL       980                                     7
Table                Blue       224                                     2
Table                Green      533                                     2
Table                Red        223                                     3
(10 行受影响)
*/


 

with cube 多维数据集,多维数据集的纬度取决于分组列的数目

 

 select Item,Color,SUM(Quantity) as TotalQuantity,COUNT(Store) as Stores 
from Inventory 
group by  Item,Color WITH cube --group by cube(item,color)
order by Item,Color
/*
Item                 Color      TotalQuantity                           Stores
-------------------- ---------- --------------------------------------- -----------
NULL                 NULL       1272                                    13
NULL                 Blue       347                                     4
NULL                 Green      535                                     3
NULL                 Red        390                                     6
Chair                NULL       290                                     5
Chair                Blue       123                                     2
Chair                Red        167                                     3
Sofa                 NULL       2                                       1
Sofa                 Green      2                                       1
Table                NULL       980                                     7
Table                Blue       224                                     2
Table                Green      533                                     2
Table                Red        223                                     3
(13 行受影响)
*/


 

 

仅返回最高级别

 select Item,Color,SUM(Quantity) as TotalQuantity,COUNT(Store) as Stores 
from Inventory 
group by GROUPING sets(Item,Color)
order by Item,Color
/*
Item                 Color      TotalQuantity                           Stores
-------------------- ---------- --------------------------------------- -----------
NULL                 Blue       347                                     4
NULL                 Green      535                                     3
NULL                 Red        390                                     6
Chair                NULL       290                                     5
Sofa                 NULL       2                                       1
Table                NULL       980                                     7
(6 行受影响)
*/


 

混合使用:

返回store最高级别和cube的两个item,color纬度所以级别组合

 
select Item,Color,SUM(Quantity) as TotalQuantity,COUNT(Store) as Stores 
from Inventory 
group by GROUPING sets(Store) ,cube(Item,color)
order by Item,Color
/*
Item                 Color      TotalQuantity                           Stores
-------------------- ---------- --------------------------------------- -----------
NULL                 NULL       190                                     5
NULL                 NULL       504                                     5
NULL                 NULL       578                                     3
NULL                 Blue       225                                     2
NULL                 Blue       122                                     2
NULL                 Green      2                                       1
NULL                 Green      229                                     1
NULL                 Green      304                                     1
NULL                 Red        274                                     2
NULL                 Red        66                                      2
NULL                 Red        50                                      2
Chair                NULL       32                                      2
Chair                NULL       122                                     2
Chair                NULL       136                                     1
Chair                Blue       101                                     1
Chair                Blue       22                                      1
Chair                Red        10                                      1
Chair                Red        21                                      1
Chair                Red        136                                     1
Sofa                 NULL       2                                       1
Sofa                 Green      2                                       1
Table                NULL       156                                     2
Table                NULL       382                                     3
Table                NULL       442                                     2
Table                Blue       100                                     1
Table                Blue       124                                     1
Table                Green      229                                     1
Table                Green      304                                     1
Table                Red        29                                      1
Table                Red        56                                      1
Table                Red        138                                     1
(31 行受影响)
*/


 

 

 

 *作者:Stephenzhou(阿蒙)     
 *日期: 2012.12.5
 *Mail:szstephenzhou@163.com     
 *另外:转载请著名出处。
 *博客地址:http://blog.csdn.net/szstephenzhou

 

 

 

 

 

 

这篇关于SQL Server2008 程序设计 汇总 group by ,WITH ROLLUP , WITH CUBE,Grouping sets(..)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/786051

相关文章

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

Java 枚举的常用技巧汇总

《Java枚举的常用技巧汇总》在Java中,枚举类型是一种特殊的数据类型,允许定义一组固定的常量,默认情况下,toString方法返回枚举常量的名称,本文提供了一个完整的代码示例,展示了如何在Jav... 目录一、枚举的基本概念1. 什么是枚举?2. 基本枚举示例3. 枚举的优势二、枚举的高级用法1. 枚举

mysql重置root密码的完整步骤(适用于5.7和8.0)

《mysql重置root密码的完整步骤(适用于5.7和8.0)》:本文主要介绍mysql重置root密码的完整步骤,文中描述了如何停止MySQL服务、以管理员身份打开命令行、替换配置文件路径、修改... 目录第一步:先停止mysql服务,一定要停止!方式一:通过命令行关闭mysql服务方式二:通过服务项关闭

SQL Server数据库磁盘满了的解决办法

《SQLServer数据库磁盘满了的解决办法》系统再正常运行,我还在操作中,突然发现接口报错,后续所有接口都报错了,一查日志发现说是数据库磁盘满了,所以本文记录了SQLServer数据库磁盘满了的解... 目录问题解决方法删除数据库日志设置数据库日志大小问题今http://www.chinasem.cn天发

mysql主从及遇到的问题解决

《mysql主从及遇到的问题解决》本文详细介绍了如何使用Docker配置MySQL主从复制,首先创建了两个文件夹并分别配置了`my.cnf`文件,通过执行脚本启动容器并配置好主从关系,文中还提到了一些... 目录mysql主从及遇到问题解决遇到的问题说明总结mysql主从及遇到问题解决1.基于mysql

MySQL的索引失效的原因实例及解决方案

《MySQL的索引失效的原因实例及解决方案》这篇文章主要讨论了MySQL索引失效的常见原因及其解决方案,它涵盖了数据类型不匹配、隐式转换、函数或表达式、范围查询、LIKE查询、OR条件、全表扫描、索引... 目录1. 数据类型不匹配2. 隐式转换3. 函数或表达式4. 范围查询之后的列5. like 查询6

Linux下MySQL8.0.26安装教程

《Linux下MySQL8.0.26安装教程》文章详细介绍了如何在Linux系统上安装和配置MySQL,包括下载、解压、安装依赖、启动服务、获取默认密码、设置密码、支持远程登录以及创建表,感兴趣的朋友... 目录1.找到官网下载位置1.访问mysql存档2.下载社区版3.百度网盘中2.linux安装配置1.

PostgreSQL如何用psql运行SQL文件

《PostgreSQL如何用psql运行SQL文件》文章介绍了两种运行预写好的SQL文件的方式:首先连接数据库后执行,或者直接通过psql命令执行,需要注意的是,文件路径在Linux系统中应使用斜杠/... 目录PostgreSQ编程L用psql运行SQL文件方式一方式二总结PostgreSQL用psql运

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M