总结 group by 的用法

本文通过实战案例详细解析 SQL 中 Group By 的多种用法,包括 Cube、RollUp、Compute 和 Compute by 等高级功能,并展示了如何利用这些功能对数据进行有效汇总。

今天用实例总结一下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 不能和 cuberollup一起使用,和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

在这里插入图片描述
按照不同的城市,分别显示该城市的订单信息,一个显示该城市的所有订单数量

就先说这些了.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值