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

相关文章

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

在MySQL执行UPDATE语句时遇到的错误1175的解决方案

《在MySQL执行UPDATE语句时遇到的错误1175的解决方案》MySQL安全更新模式(SafeUpdateMode)限制了UPDATE和DELETE操作,要求使用WHERE子句时必须基于主键或索引... mysql 中遇到的 Error Code: 1175 是由于启用了 安全更新模式(Safe Upd

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySql死锁怎么排查的方法实现

《MySql死锁怎么排查的方法实现》本文主要介绍了MySql死锁怎么排查的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录前言一、死锁排查方法1. 查看死锁日志方法 1:启用死锁日志输出方法 2:检查 mysql 错误

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

MySQL修改密码的四种实现方式

《MySQL修改密码的四种实现方式》文章主要介绍了如何使用命令行工具修改MySQL密码,包括使用`setpassword`命令和`mysqladmin`命令,此外,还详细描述了忘记密码时的处理方法,包... 目录mysql修改密码四种方式一、set password命令二、使用mysqladmin三、修改u

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu

SQL Server数据库迁移到MySQL的完整指南

《SQLServer数据库迁移到MySQL的完整指南》在企业应用开发中,数据库迁移是一个常见的需求,随着业务的发展,企业可能会从SQLServer转向MySQL,原因可能是成本、性能、跨平台兼容性等... 目录一、迁移前的准备工作1.1 确定迁移范围1.2 评估兼容性1.3 备份数据二、迁移工具的选择2.1

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate