基本语法:

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. 为什么要坚持用ASP.NET MVC!(②)

    尽管ASP.NET MVC架构和Web Form架构区别很大,但是还是有很多共同之处.毕竟它们都是以ASP.NET API与.NET框架为基础构建的.比较一下ASP.NET MVC和Web Form框 ...

  2. UML学习(二)-----类图

    UML学习(二)-----类图 http://www.cnblogs.com/silent2012/archive/2011/09/07/2169946.html http://www.cnblogs ...

  3. java实现简单的素数判断

    素数的这个问题由来已久,大学刚接触语言的时候遇到过找素数的问题,找工作笔试的时候也遇到过素数的问题,今天就特地写这篇博文,缅怀一下. 一.什么是素数? 除了1和它本身以外不再有其他的除数整除. 二.判 ...

  4. 关于配置php源代码管理环境的几点注意

    1.如果你的项目原本就是utf-8的编码,而你设置eclipse的工作空间的默认编码为utf-8后,或者在项目文件夹上右键属性设置了编码类型后依旧没有效果,而是需要在每一个文件上右键属性设置为utf- ...

  5. 节点文件将两个不同格式的XML文件,进行节点对照,并生成一个用于对照功能的XML

    本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~ 经常有的需求是,需要将一种格式的XML转换成另一种XML.如果要实现这个功能首先需要将两个不同XML手动建立节点对比关系.然后 ...

  6. WCF与WebService之间的异同

    下面我们来详细讨论一下二者的区别.Web Service和WCF的到底有什么区别. 1,Web Service:严格来说是行业标准,也就是Web Service 规范,也称作WS-*规范,既不是框架, ...

  7. URAL 2056 Scholarship 水题

    ScholarshipTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.a ...

  8. [Angular 2] How To Debug An Angular 2 Application - Debugging via Augury or the Console

    In this lesson we will learn several ways to debug an Angular 2 application, including by using Augu ...

  9. Spring MVC 接收Json格式参数

    今天做了一个关于表格排序的功能,可以通过右边的箭头做排序操作,每次操作需要通过Ajax将每条记录的Id数组作为参数去发送请求, 后台Spring MVC接到参数后作更改序号操作. 前端页面发送请求的代 ...

  10. 真机下, 如何在File Explorer里看data下的数据?

    首先手机得Root , 你如果想单个单个的看, root explorer可以设置Permission Other下的两个权限点上就ok了. 如果想看到所有的, 即子目录也可以看到, 只需要adb r ...