活着的死人 发表于 2015-1-16 22:50:57

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:44

如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。

海妖 发表于 2015-1-28 19:17:24

无法深入到数据库系统层面去了解和探究

莫相离 发表于 2015-2-5 22:36:05

大家注意一点。如下面的例子:

深爱那片海 发表于 2015-2-14 00:08:15

Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。

兰色精灵 发表于 2015-3-4 03:20:10

总感觉自己还是不会SQL

冷月葬花魂 发表于 2015-3-11 15:47:41

分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。

灵魂腐蚀 发表于 2015-3-19 01:34:43

以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了

飘灵儿 发表于 2015-3-27 02:11:24

而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~

因胸联盟 发表于 2015-3-27 02:11:25

微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。
页: [1]
查看完整版本: MYSQL网站制作之数据汇总加排序