仓酷云

标题: MYSQL网站制作之数据汇总加排序 [打印本页]

作者: 活着的死人    时间: 2015-1-16 22:50
标题: 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开始非常小巧,但是可以随着公司的成长而不断地变强大。
作者: 小妖女    时间: 2015-1-20 05:40
如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。
作者: 海妖    时间: 2015-1-28 19:17
无法深入到数据库系统层面去了解和探究
作者: 莫相离    时间: 2015-2-5 22:36
大家注意一点。如下面的例子:
作者: 深爱那片海    时间: 2015-2-14 00:08
Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。
作者: 兰色精灵    时间: 2015-3-4 03:20
总感觉自己还是不会SQL
作者: 冷月葬花魂    时间: 2015-3-11 15:47
分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。
作者: 灵魂腐蚀    时间: 2015-3-19 01:34
以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了
作者: 飘灵儿    时间: 2015-3-27 02:11
而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~
作者: 因胸联盟    时间: 2015-3-27 02:11
微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2