您现在的位置是:网站首页> 编程资料编程资料
总结下sqlserver group by 的用法_MsSql_
2023-05-26
390人已围观
简介 总结下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

按照不同的城市,分别显示该城市的订单信息,一个显示该城市的所有订单数量
就先说这些了.
相关内容
- sqlserver 增删改查一些不常用的小技巧_MsSql_
- Sql Server中常用的6个自定义函数分享_MsSql_
- SQL Server中发送HTML格式邮件的方法_MsSql_
- SQL Server 监控磁盘IO错误,msdb.dbo.suspect_pages_MsSql_
- SQL Server 提取数字、提取英文、提取中文的sql语句_MsSql_
- SQL Server恢复模型之批量日志恢复模式_MsSql_
- SQL Server中调用C#类中的方法实例(使用.NET程序集)_MsSql_
- SQL Server中聚合历史备份信息对比数据库增长的方法_MsSql_
- 将一个表中个某一列修改为自动增长的方法_MsSql_
- SQLServer中bigint转int带符号时报错问题解决方法_MsSql_
