转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> SyBase >> 正文
分级汇总实现的3种方法比较         ★★★★

分级汇总实现的3种方法比较

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1524 更新时间:2009/4/22 23:09:09

分级汇总实现的3种方法比较

代码:--------------------------------------------------------------------------------
select code 代码 , substrb(''''    '''',1,item_level*2-2)||b.reg_type 登记注册类型, cnt 家数 from
(
(select substr(z01_08,1,1)||''''00'''' code ,count(*) cnt
from cj601
group by substr(z01_08,1,1))
union
(select substr(z01_08,1,2)||''''0'''' code ,count(*) cnt
from cj601
group by substr(z01_08,1,2))
union
(select substr(z01_08,1,3) code ,count(*) cnt
from cj601
group by substr(z01_08,1,3))
)
c, djzclx b where c.code=b.reg_code;
代码   登记注册类型                            家数         
------ --------------------------------------- ---------
100    内资企业                                   
110      国有企业                                 
120      集体企业                                 
130      股份合作企业                             
140      联营企业                                 
141        国有联营企业                           
142        集体联营企业                           
143        国有与集体联营企业                     
149        其他联营企业                           
150      有限责任公司                             
151        国有独资公司                           
159        其他有限责任公司                       
160      股份有限公司                             
170      私营企业                                 
171        私营独资企业                           
172        私营合伙企业                           
173        私营有限责任公司                       
174        私营股份有限公司                       
200    港、澳、台商投资企业                       
210      合资经营企业(港或澳、台资)               
220      合作经营企业(港或澳、台资)               
230      港、澳、台商独资经营企业                 
240      港、澳、台商投资股份有限公司             
300    外商投资企业                               
310      中外合资经营企业                         
320      中外合作经营企业                         
330      外资企业                                 
340      外商投资股份有限公司                     

----
 lastwinner
 
type: substr(z01_08,1,1)||''''00''''
subtype : substr(z01_08,1,2)||''''0''''
sub-subtype : substr(z01_08,1,3)

select ..........
group by rollup(type, subtype, sub-subtype)

试试看

代码:
--------------------------------------------------------------------------------
select code 代码 , substrb(''''    '''',1,item_level*2-2)||b.reg_type 登记注册类型, cnt 家数 from
(
select
case when code3 is not null then code3
     when code2<>''''0'''' then code2
else code1
end code,cnt
 from (
select substr(z01_08,1,1)||''''00'''' code1 , substr(z01_08,1,2)||''''0'''' code2 , substr(z01_08,1,3) code3 ,count(*) cnt
    from j601
    group by rollup(substr(z01_08,1,1),substr(z01_08,1,2),substr(z01_08,1,3))
) where code2<>code3 or code3 is null and code1<>''''00''''
)
c, djzclx b where c.code=b.reg_code
order by 1 
;
最终版14.89秒

代码:--------------------------------------------------------------------------------
select code 代码 , substrb(''''    '''',1,item_level*2-2)||b.reg_type 登记注册类型, cnt 家数 from
(
select
case when code3 is not null then code3
     when code2<>''''0'''' then code2
else code1
end code,cnt
 from (
select substr(z01_08,1,1)||''''00'''' code1 , substr(z01_08,1,2)||''''0'''' code2 , substr(z01_08,1,3) code3 ,sum(cnt) cnt
    from (select substr(z01_08,1,3) z01_08,count(*) cnt from j601 group by substr(z01_08,1,3))
    group by rollup(substr(z01_08,1,1),substr(z01_08,1,2),substr(z01_08,1,3))
) where code2<>code3 or code3 is null and code1<>''''00''''
)
c, djzclx b where c.code=b.reg_code
order by 1 
;
在小一些的数据量上的执行情况


代码:--------------------------------------------------------------------------------
已连接。
SQL> set autot on
SQL> set timi on
SQL> select code 代码 , substrb(''''    '''',1,item_level*2-2)||b.reg_type 登记注册类型, cnt 家数 from
  2  (
  3  (select substr(z01_08,1,1)||''''00'''' code ,count(*) cnt
  4  from cj601
  5  group by substr(z01_08,1,1))
  6  union
  7  (select substr(z01_08,1,2)||''''0'''' code ,count(*) cnt
  8  from cj601
  9  group by substr(z01_08,1,2))
 10  union
 11  (select substr(z01_08,1,3) code ,count(*) cnt
 12  from cj601
 13  group by substr(z01_08,1,3))
 14  )
 15  c, djzclx b where c.code=b.reg_code;

[1] [2]  下一页


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台