您现在的位置: 万盛学电脑网 >> 程序编程 >> 数据库 >> 数据库综合 >> 正文

总结下sqlserver group by 的用法

作者:佚名    责任编辑:admin    更新时间:2022-06-22

今天为大家总结下sqlserver 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

sqlserver group by 的用法

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

 

下一个脚本:

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

sqlserver group by 的用法

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

 

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

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

sqlserver group by 的用法

使用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的功能会失效.