基本语法:

GROUP BY [ALL] group_by_expression[,……n][WITH (CUBE|ROLLUP)]

参数说明:

ALL:用于指定包含所有组和结果集,甚至包含那些其中任何行都不满足Where子句指定的搜索条件的组和结果集;

group_by_expression:用于指定进行分组所依据的表达式,也称为组合列。

CUBE\ROLLUP:指定在结果集内不仅包含由Group by 提供的行,还包含汇总行。

常用用法:

例1、统计2008年产品编码为716到730的产品的销售量和销售额

USE AdventureWorks2008R2;
GO
SELECT ProductID,
 SUM(OrderQty) AS SubQty,SUM(LineTotal) AS SubTotal
FROM (
SELECT *
FROM Sales.SalesOrderDetail sod
WHERE  ProductID BETWEEN 716 AND 730
)Sale
WHERE ModifiedDate > CONVERT(DATETIME,'2008-1-1',120)
GROUP BY ProductID
ORDER BY ProductID

运行结果:

例2、Group by all 可以对数据表中所有的数据进行分组

USE AdventureWorks2008R2;
GO
SELECT ProductID,
 SUM(OrderQty) AS SubQty,SUM(LineTotal) AS SubTotal
FROM (
SELECT *
FROM Sales.SalesOrderDetail sod
WHERE  ProductID BETWEEN 716 AND 730
)Sale
WHERE ModifiedDate > CONVERT(DATETIME,'2008-1-1',120)
GROUP BY all ProductID
ORDER BY ProductID
运行结果:

例2和例1只是相差了“ALL”,但是在结果上却有所不同;

因为产品编码719,723,725,727,,729在select子句结果集Sale中存在数据,所以会出现在最后的结果集中。

但是因为这几个产品2008年没有销售记录所以其销售量和销售额为null。

例3、使用with cube 会对 Group by 所列出的所有分组字段进行汇总运算

USE AdventureWorks2008R2;
GO
SELECT ProductID,YEAR(Sale.ModifiedDate)S_Year,MONTH(Sale.ModifiedDate)S_Month,
 SUM(OrderQty) AS SubQty,SUM(LineTotal) AS SubTotal
FROM (
SELECT *
FROM Sales.SalesOrderDetail sod
WHERE  ProductID BETWEEN 716 AND 717
)Sale
WHERE ModifiedDate >= CONVERT(DATETIME,'2007-12-1',120)
AND ModifiedDate < CONVERT(DATETIME,'2008-3-1',120)
GROUP BY ProductID,YEAR(Sale.ModifiedDate),MONTH(Sale.ModifiedDate)
WITH cube
运行结果:

例4、使用with rollup 会对 Group by 所列出的分组字段从左往右(有时说从右往左)进行汇总运算

USE AdventureWorks2008R2;
GO
SELECT ProductID,YEAR(Sale.ModifiedDate)S_Year,MONTH(Sale.ModifiedDate)S_Month,
 SUM(OrderQty) AS SubQty,SUM(LineTotal) AS SubTotal
FROM (
SELECT *
FROM Sales.SalesOrderDetail sod
WHERE  ProductID BETWEEN 716 AND 717
)Sale
WHERE ModifiedDate >= CONVERT(DATETIME,'2007-12-1',120)
AND ModifiedDate < CONVERT(DATETIME,'2008-3-1',120)
GROUP BY ProductID,YEAR(Sale.ModifiedDate),MONTH(Sale.ModifiedDate)
WITH rollup
运行结果:

PS : Compute by 也有分组统计的作用,效果和Group by 略有不同,其语法如下:

[ COMPUTE     { { AVG | COUNT | MAX | MIN | STDEV | STDEVP | VAR | VARP | SUM }     ( expression ) } [ ,...n ]     [ BY expression [ ,...n ] ] ]

示例:

USE AdventureWorks2008R2;
GO
SELECT SalesPersonID, CustomerID, OrderDate, SubTotal, TotalDue
FROM Sales.SalesOrderHeader
ORDER BY SalesPersonID, OrderDate
COMPUTE SUM(SubTotal), SUM(TotalDue) BY SalesPersonID /*By后的分组字段必须出现在Order by 中*/
COMPUTE SUM(SubTotal), SUM(TotalDue) /*可多个Compute*/

运行结果(部分截图):

更多用法请查看微软msdn

随笔001:Group by 语法剪辑的更多相关文章

  1. Oracle中With As 、Group By 语法

    比如有下面三张表,用With as  .Group By语法解决几个问题; with as :  可以用来创建临时表,作为过度的表: group by:   按照某个字段来分类: 对应字段如下: Sa ...

  2. mysql5.7 group by语法 1055

    先来看如下语句,查询默认存在的引擎表 之前使用的MySQL版本为5.7以下,根据support进行分组执行语句如下 添加跟分组support无关的字段engine 没有任何问题 现在使用的版本是5.7 ...

  3. group by语法

    group by 用法解析 group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表. SELECT子句中的列名必须为分组列或列函数.列函数对于GROUP BY子 ...

  4. metal2 里 programmable blending 和image block的区别 语法以及persistent thread group的语法

    programmable blending 刚接触这个概念的时候 挺激动的 因为能解决很多管线里面的问题 比如 切一次rt再切回来 为了做read write same rt 有了这个 就不用切啦 可 ...

  5. 随笔1:Markdown语法学习

    学习背景 日常工作学习的时候,总喜欢用有道在线笔记记录点东西,不过以往都没太在意笔记的整理和排版,代码或者图片什么的都是直接贴在笔记上,不美观不说,有些代码格式也不容易进行区分,格式也在复制的时候容易 ...

  6. C++的学习 (此博客将一直补充更新下去,C++语法方面的内容不开新随笔了, *【语法学习】)

    // #include <sstream> // stringstream 是 C++ 提供的另一个字串型的串流(stream)物件,包含在上述头文件中 // 先谈它在字符串处理方面的应用 ...

  7. 附001.Nginx location语法规则

    一 location规则 1.1 location语法 基本语法: location [=|~|~*|^~]/uri/{...} 修饰符释义: 1 = #表示精确严格匹配,只有请求的url路径与后面的 ...

  8. Ext.Net 学习随笔 001 安装Ext.Net

    Ext.Net版本:4.1.0 Ext.Net官网:ext.net Ext.Net官方演示:mvc.ext.net Ext.Net MVC Example 下载:github.com/extnet/E ...

  9. ORM开发之解析lambda实现group查询(附测试例子)

    目的:以编程方式实现group查询,在开发ORM时,需要达到这样的效果 先看一个简单的group语句 select BarCode,ProductName,COUNT(BarCode) as tota ...

随机推荐

  1. Educational Codeforces Round 2 C. Make Palindrome 贪心

    C. Make Palindrome Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/600/pr ...

  2. Android Camera

    Android调用系统api使用照相机功能,实现拍照获取图片以及从照相机库中获取指定图片的功能. 下面是演示样例代码: <?xml version="1.0" encodin ...

  3. Hbase深入学习(六) Java操作HBase

    Hbase深入学习(六) ―― Java操作HBase 本文讲述如何用hbase shell命令和hbase java api对hbase服务器进行操作. 先看以下读取一行记录hbase是如何进行工作 ...

  4. cuda-convnet 卷积神经网络 一般性结构卷积核个数 和 输入输出的关系以及输入输出的个数的说明:

    卷积神经网络 一般性结构卷积核个数和 输入输出的关系以及输入输出的个数的说明: 以cifar-10为例: Initialized data layer 'data', producing3072 ou ...

  5. 文献阅读笔记——group sparsity and geometry constrained dictionary

    周五实验室有同学报告了ICCV2013的一篇论文group sparsity and geometry constrained dictionary learning for action recog ...

  6. SAP BW 平面文件创建信息立方体

    T-CODE:RSA1 1.创建信息范围 2.创建信息范围 创建特性信息对象目录 创建关键指标信息对象目录 3.创建特性信息对象 依次创建客户,销售组织 4.创建关键指标 依次创建单价和金额 5.创建 ...

  7. GNU C中x++是原子操作吗?

    http://blog.csdn.net/liuaigui/article/details/4141563

  8. Link List

    At first, i prepared to go through <the introduction to algorithm> ,however , i found some par ...

  9. 数据库字段类型中char和Varchar区别

    char和varchar区别 char类型:对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节,char存储定长数据很方便,char字段上的索引效率级高,比如定义char(10),那么不论你 ...

  10. 炼数成金hadoop视频干货06-10

    视频地址:http://pan.baidu.com/s/1dDEgKwD 第六课统讲了hadoop几个子项目和HBase,第七课还是讲的HBase 第八课讲了PIG 第九课讲了Hive和Zookeep ...