总结下sqlserver group by 的用法_MsSql

今天用实例总结一下group by的用法。

归纳一下:group by:ALL ,Cube,RollUP,Compute,Compute by

创建数据脚本

Create Table SalesInfo
(Ctiy nvarchar(50),
OrderDate datetime,
OrderID int
)

insert into SalesInfo
select N'北京','2014-06-09',1001
union all
select N'北京','2014-08-09',1002
union all
select N'北京','2013-10-09',1009
union all
select N'大连','2013-08-09',4001
union all
select N'大连','2013-10-09',4002
union all
select N'大连','2013-05-12',4003
union all
select N'大连','2014-11-11',4004
union all
select N'大连','2014-12-11',4005

首先执行以下脚本:

select Ctiy,count(OrderID) as OrderCount
from
SalesInfo
group by Ctiy
with cube

可以看到多出了一行 是对所有的订单数的汇总

下一个脚本:

select Ctiy,Year(OrderDate) as OrderYear,count(OrderID) as OrderCount
from
SalesInfo
group by Ctiy,Year(OrderDate)
with cube

可以看出来对分组中的维度都进行了汇总,并且还有一个订单的总和

下一个脚本(注意出现了rollup):

select Ctiy,Year(OrderDate) as OrderYear,count(OrderID) as OrderCount
from
SalesInfo
group by Ctiy,Year(OrderDate)
with rollup

使用rollup会对group by列出的第一个分组字段进行汇总运算

下一个脚本:

select Ctiy,count(OrderID) as OrderCount
from
SalesInfo
where
Ctiy = N'大连'
group by all Ctiy

我们会看到 使用group by all 后,不符合条件的城市也会出现,只是订单数是零

需要注意的是 All 不能和 cube 和 rollup一起使用,和having一起使用的话,All的功能会失效.

下一个脚本:

select Ctiy,orderdate,orderid
from
SalesInfo
compute count(orderid)

显示了两个结果集,一个是订单结果集,一个是订单总数结果集

最后一个脚本:

select Ctiy,orderdate,orderid
from
SalesInfo
order by Ctiy
compute count(orderid) by Ctiy

按照不同的城市,分别显示该城市的订单信息,一个显示该城市的所有订单数量

就先说这些了.

时间: 2024-11-03 18:30:52

总结下sqlserver group by 的用法_MsSql的相关文章

详解SQL中Group By的用法_MsSql

GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组. 1.概述 "Group By"从字面意义上理解就是根据"By"指定的规则对数据进行分组,所谓的分组就是将一个"数据集"划分成若干个"小区域",然后针对若干个"小区域"进行数据处理. 2.原始表 3.简单Group By 示例1 select 类别, sum(数量) as 数量之和 from A group by 类别 返回结果如下表

浅析SQL语句中GROUP BY的用法_MsSql

GROUP BY 是分组查询, 一般 GROUP BY 是和 聚合函数配合使用,你可以想想 你用了GROUP  BY 按  ITEM.ITEMNUM 这个字段分组,那其他字段内容不同,变成一对多又改如何显示呢,比如下面所示 A  B 1  abc 1  bcd 1  asdfg select A,B from table group by A 你说这样查出来是什么结果, A  B     abc 1  bcd     asdfg 右边3条如何变成一条,所以需要用到聚合函数,比如 select A

sqlserver 中Group by 的用法

问题描述 sqlserver 中Group by 的用法 当我们根据某些字段进行分类汇总的时候,比如使用group by A, B, C 的时候.具体的分组过程是怎么样的呢??

SQLServer中merge函数用法详解_MsSql

Merge关键字是一个神奇的DML关键字.它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句.MSDN对于Merge的解释非常的短小精悍:"根据与源表联接的结果,对目标表执行插入.更新或删除操作. MERGE 目标表 USING 源表 ON 匹配条件 WHEN MATCHED THEN 语句 WHEN NOT MATCHED THEN 语句; 其中最后语句分号不可以省略,且源表既可以是一个表也可以是一个子查询语句 WHEN NOT MATCHE

linux下echo命令的奇怪用法

问题描述 linux下echo命令的奇怪用法 echo ""this is rs1 super secret key"" > /data/key/r0这段话是什么意思啊,后面跟的竟然是一个路径,而不是路径下的某一个文件?? 解决方案 /data/key/r0 在linux代表的是绝对路径,你echo这句话是把这句话写到了key目录下的r0这个文件中 echo ""this is rs1 super secret key""

sql group by-sql中的group by的用法

问题描述 sql中的group by的用法 user 表里面有name 和age 两个字段name age admin 34admin 56alex 38 我要对name 进行group by,select nameage from user group by name在我的印象中这句是报错的,因为不能这样显示age的,我说的对吗,而且我查询资料貌似也是不可以的啊,求解答 解决方案 对名字进行分组后,那age有多个,总得有个业务逻辑吧,比如年龄求平均(avg)或者年龄总和(sum),或者最大年龄

Android下2d物理引擎Box2d用法简单实例_Android

本文实例讲述了Android下2d物理引擎Box2d用法.分享给大家供大家参考.具体如下: 程序运行的时候需要加载Jbox2d的库,可到以下地址下载(使用的是不带渲染部分的库jbox2d-2.0.1-library-only.jar): http://sourceforge.net/projects/jbox2d/ package com.test; import org.jbox2d.collision.AABB; import org.jbox2d.collision.CircleDef;

C#下SQLserver数据与Oracle数据对比新增

问题描述 C#下SQLserver数据与Oracle数据对比,如果Oracle中没有的则新增过去.具体怎么实现呢?用哪些控件和方法效率比较高呢? 解决方案 解决方案二:Oracle和SQLServer做差量同步,应该有这种软件能实现,实际使用中可能写程序同步比较靠谱1.在Oracle要同步的表创建触发器,把对表记录的操作(增.删.改)按主键记录到一张表里面2.筛选这张表的记录(比如一条主键是123的记录,对某一个字段做了三次修改,触发器在中间表产生三条记录,这里要筛选出最后一条记录,最后一条修改

php下pdo的mysql事务处理用法实例_php技巧

本文实例讲述了php下pdo的mysql事务处理用法.分享给大家供大家参考.具体分析如下: php+mysql事务处理的几个步骤: 1.关闭自动提交 2.开启事务处理 3.有异常就自动抛出异常提示再回滚 4.开启自动提交 注意:mysql只有这个InnoDB驱动是支持事务处理的,默认MyIsAM驱动不支持,下面是实例代码: 复制代码 代码如下: <?php     try{         $pdo=new pdo("mysql:host=localhost;dbname=mydb&quo