当前位置: 移动技术网 > IT编程>数据库>MSSQL > 总结下sqlserver group by 的用法

总结下sqlserver group by 的用法

2017年12月12日  | 移动技术网IT编程  | 我要评论

青岛公积金,中国好声音20120727,去张家界玩要多少钱

今天用实例总结一下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

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

就先说这些了.

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网