MYSQL网站制作之数据汇总加排序
采用DBaaS解决方案,他们也可以使用同大企业一样的技术。在大型组织中,DBaaS可以提供部门级解决MySQL学习教程,而无需IT部门和采购部门的介入,提供更快和更容易的方法来实现小型解决方案。排序|数据原帖地点:
http://community.csdn.net/Expert/topic/3317/3317231.xml?temp=.7252313
程序选择了:项目称号,项目年度,地市,请求单元,撑持金额这几个字段
个中汇总字段为项目年度,地市
查询了局列就要按必要项目称号,项目年度,地市,请求单元,撑持金额分列好
并能按指定的字段举行排序处置
请求天生的了局:
=================================================================
序号项目称号项目年度地市请求单元撑持金额
1称号12004省直1公司100
2称号22004省直2公司100
32004省直算计200
4称号32004石家庄3公司100
52004石家庄算计100
62004算计300
7称号32005石家庄3公司100
82005石家庄算计100
92005算计100
10总计400
=================================================================
------------------------------------------------------------------------------------
--假定以下一时表是经由第一次汇总+排序处置失掉的(第一次处置不处置小计,总计等)
createtable#t(项目称号varchar(10),项目年度varchar(10),地市varchar(10),请求单元varchar(10),撑持金额int)
insert#tselect称号1,2004,省直,1公司,400
unionallselect称号2,2004,省直,2公司,300
unionallselect称号3,2004,石家庄,3公司,200
unionallselect称号3,2005,石家庄,3公司,100
go
--上面是处置
select项目称号,项目年度,地市,请求单元,撑持金额
from(--这是完成汇总的部分(不思索小计,总计处置部分的汇总)
select*
,s1=0,s2=项目年度,s3=0,s4=地市,s5=0,s6=请求单元,s7=0--这是排序必要的
from#t
unionall
--这是完成汇总的小计,总计部分
select项目称号=case
whengrouping(项目年度)=1then总计
elseend
,项目年度=case
whengrouping(项目年度)=0
andgrouping(地市)=1
then项目年度+算计
elseend
,地市=case
whengrouping(项目年度)=0
andgrouping(地市)=0
andgrouping(请求单元)=1
then地市+算计
elseend
,请求单元=case
whengrouping(请求单元)=0then请求单元+算计
elseend
,撑持金额=sum(撑持金额)
,grouping(项目年度),项目年度--这里及上面的是排序必要的
,grouping(地市),地市
,grouping(请求单元),请求单元
,grouping(请求单元)+1
from#t
groupby项目年度,地市,请求单元withrollup--这是要天生小计,总计的分组字段
)a
orderbys1,s2,s3,s4,s5,s6,s7,撑持金额--s1~s6是避免小计,总计排序庞杂必要的,前面的撑持金额是其他排序必要的
go
--删除测试的一时表
droptable#t
/*--测试了局
项目称号项目年度地市请求单元撑持金额
---------------------------------------------------------------
称号12004省直1公司400
1公司算计400
称号22004省直2公司300
2公司算计300
省直算计700
称号32004石家庄3公司200
3公司算计200
石家庄算计200
2004算计900
称号32005石家庄3公司100
3公司算计100
石家庄算计100
2005算计100
总计1000
(所影响的行数为14行)
--*/
--下面是按项目年度,地市,请求单元做小计,总计的
--上面是只按项目年度,地市做小计,总计的,对照一下,更简单看出纪律
--上面是处置
select项目称号,项目年度,地市,请求单元,撑持金额
from(--这是完成汇总的部分(不思索小计,总计处置部分的汇总)
select*
,s1=0,s2=项目年度,s3=0,s4=地市,s5=0--这是排序必要的
from#t
unionall
--这是完成汇总的小计,总计部分
select项目称号=case
whengrouping(项目年度)=1then总计
elseend
,项目年度=case
whengrouping(项目年度)=0
andgrouping(地市)=1
then项目年度+算计
elseend
,地市=case
whengrouping(地市)=0
then地市+算计
elseend
,
,撑持金额=sum(撑持金额)
,grouping(项目年度),项目年度--这里及上面的是排序必要的
,grouping(地市),地市
,grouping(地市)+1
from#t
groupby项目年度,地市withrollup--这是要天生小计,总计的分组字段
)a
orderbys1,s2,s3,s4,s5,撑持金额--s1~s6是避免小计,总计排序庞杂必要的,前面的撑持金额是其他排序必要的
/*--测试了局
项目称号项目年度地市请求单元撑持金额
-----------------------------------------------------------
称号22004省直2公司300
称号12004省直1公司400
省直算计700
称号32004石家庄3公司200
石家庄算计200
2004算计900
称号32005石家庄3公司100
石家庄算计100
2005算计100
总计1000
(所影响的行数为10行)
--*/
由于在MySQL中有如此众多的额外功能可选,诸如存储引擎等,你可以选择最适合你公司的一个,或者尝试选用多个引擎。MySQL开始非常小巧,但是可以随着公司的成长而不断地变强大。 如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。 无法深入到数据库系统层面去了解和探究 大家注意一点。如下面的例子: Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。 总感觉自己还是不会SQL 分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。 以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了 而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~ 微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。
页:
[1]