今天用实例总结一下groupby的用法。
归纳一下:groupby:ALL,Cube,RollUP,Compute,Computeby
创建扩船内帮金府花占数据脚本
CreateTableSalesInfo
(Ctiynvarchar(50),
OrderDatedatetime,
OrderIDint
)
insertintoSalesInfo
selectN'北京','2014-06-09',1001
unionall
selectN'北京','2014-08-09',10所02
unionall
selectN'北京','2013-10-09',1009
unionall
selectN'大连','2013-08-09',4001
unionall
selectN'大连','2013-10-09',4002
unionall
selectN'大连','2013-05-12',4003
unionall
selectN'大连','2014-11-11',4004
unionall
selectN'大连','2014-12-11',4005
首先执行以下脚本:
selectCtiy,count(OrderID)asOrderCount
from
SalesInfo
groupbyCtiy
withcube
可以看到多出了一行是对所有的订单数的汇总
下一个脚本:
selectCtiy,Year(OrderDate)asOrderYear,count(OrderID)asOrderCount
from
SalesInfo
groupbyCtiy,Year(OrderDate)
withcube
可以看出来对分组中的维度都进行了汇总,并且还有一个订单的总和
下一个脚本(注意出现了rollup):
selectCtiy,Year(OrderDate)asOrd之方化erYear,count(OrderID)asOrderCount
from
SalesInfo
groupbyCtiy,Year(OrderDate)
withrollup
使用rollup会对groupby列出的第日件益川航随音威四府一个分组字段进行汇总运算
下一个脚本:
selectCtiy,count(OrderID)asOrderCount
from
转赵SalesInfo
where
Ctiy=N'大连'
groupbyallCtiy
我们会看到使用groupbyall后,不符合条件的城市也会出现,只审初子血目马升是订单数是零
需要注意的是All不能和cube和rollup一起使用,和having一起使用的话,All的功能会失效.
下一个脚茶输包话苗试线要安本:
selectCtiy,orderdate,orderid
f接自几rom
SalesInfo
computecount(orde呀需以rid)
显示了两个结于看果集,一个是订单结果集,一个是订单总数结果集
最后一个脚本:
sel曲香急象呀ectCtiy,orderdate,orderid
from
SalesInfo
orderbyCtiy
computecount(orderid)byCtiy
按照不同的城市,分别显示该城市的订单信息,一个显示该城市的所有订兰时候烈防斤刚构她单数量
就先说这些者了.