承接国内外服务器租用托管、定制开发、网站代运营、网站seo优化托管接单、网站代更新,新老站点皆可!!咨询QQ:3787320601

总结下sqlserver group by 的用法

管理员 2023-07-04 08:33:49 互联网圈 14 ℃ 0 评论 2970字 收藏

今天用实例总结一下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⑴0-09′,1009
union all
select N’大连’,’2013-08-09′,4001
union all
select N’大连’,’2013⑴0-09′,4002
union all
select N’大连’,’2013-05⑴2′,4003
union all
select N’大连’,’2014⑴1⑴1′,4004
union all
select N’大连’,’2014⑴2⑴1′,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

依照区别的城市,分别显示该城市的定单信息,一个显示该城市的所有定单数量

就先说这些了.

文章来源:丸子建站

文章标题:总结下sqlserver group by 的用法

https://www.wanzijz.com/view/61312.html

X

截屏,微信识别二维码

微信号:weimawl

(点击微信号复制,添加好友)

打开微信