软件开发高手须掌握的4大SQL精髓语句(一)

 

软件开发高手须掌握的4大SQL精髓语句(一)

                         马根峰

           ( 广东联合电子收费股份有限公司, 广州 510300)

 

作者博客:

    CSDN博客:http://blog.csdn.net/magenfeng

   新浪博客:  http://blog.sina.com.cn/magenfeng

   QQ空间:  http://user.qzone.qq.com/630414817/main#!

 

 

      引言  

        随着计算机在社会各领域应用的深入,软件开发人员不得不面临着或多或少的数据处理、数据库访问。

在SQL(Structured Query Language)语言DML中,有四大语句堪称其精髓部分。下面就讲述一下其中之一, Case When 语句的用法。本文介绍用它实现数据仓库中的维度转换,来将数据展现给分析人员来进行决策支持与分析。

       CASE WHEN  Conition   

                    THEN     。。。

                    ELSE     。。。

                    END

 

 

      数据仓库中的维度转换

        在数据仓库数据展现中,我们通常要用到将数据表进行维度转换。如数据仓库中某一关系模式

            Vehsm (Roadno, Year , Fluxcount,。。。)

        对于数据分析人员来说,他们更想了解某一条高速公路在一段时间内车流量的变化情况,那最好就是将关系表 TB_ADFLUXCOLT 以下面的关系模式来展现

            Vehcount_Trans (Roadno, Year Fluxcount 1, .。。。, Year Fluxcount n)

 

        下面笔者就分别以Case When语句、BrioQuery来分别演示一下如何实现维度转换。

  

 

      Case When语句来实现维度转换

        下面就以DB2数据库为例,以“万能数据库查询分析器” 中文版本《DB 查询分析器》、英文版本《DB Query Analyzer》作为客户端工具来来演示一下Case When 语句如何实现维度转换。

 

 

selectuu.roadno,rr.roadname,

      sum(casewhenuu.year=2009thenuu.FLUXCOUNTelse0endasyear_2009,

      sum(casewhenuu.year=2010thenuu.FLUXCOUNTelse0endasyear_2010,

      sum(casewhenuu.year=2011thenuu.FLUXCOUNTelse0endasyear_2011

from

(

   selectroadno,year(squaddate)asyear,sum(FLUXCOUNT)asFLUXCOUNT

   fromTB_ADFLUXCOLT 

   where  squaddatebetween'2009-01-01'and'2011-12-31'andoiflag=0

   groupbyroadno,year(squaddate)

) uu, 

(

   selectdistinct  roadno,roadname

   fromtb_road  

   wherestatus=0andlevelin(0,1) androadnamenotlike'%南部快速%'

) rr

whereuu.roadno=rr.roadno 

groupbyuu.roadno,rr.roadname

withur;

 

 

 
            图1    DB 查询分析器中输入要执行的Case When语句

 



           图2    DB 查询分析器  执行Case When语句

 

 

  
           图3    DB Query Analyzer 中输入要执行的Case When语句

 

 
           图4    DB Query Analyzer 执行Case When语句

 

 

      BrioQuery来实现维度转换

        在数据仓库工具中,BrioQuery提供了比较强大的数据展现功能,能方便地实现上面的维度转换。

 

 
           图5    BrioQuery   数据表 Vehsm

 

 


            图6    BrioQuery   执行查询后的结果

 

 

           图7    BrioQuery   维度转换后的结果

 

 

        但对于大数据量表的维度转换来说,则几乎无法完成,笔者在中文核心刊物《电信科学》2003年11期《广东电信公话200专用话机话务动态分析系统的构建》文章中,详细地介绍了“广东电信公话200专用话机话务动态分析系统”中是如何实现这一点的,这个话务动态系统是自己以前在广东省电信有限公司工作的时候独自开发的,有兴趣的话,可以看

 

 

        本人的CSDN博客的博文:

            “广东电信公话200专用话机话务动态分析系统的构建”

             http://blog.csdn.net/magenfeng/article/details/7691403

 

 

 


 

 

软件开发高手须掌握的4SQL精髓语句 系列:

 

软件开发高手须掌握的4大SQL精髓语句(四)

http://blog.csdn.net/magenfeng/article/details/8050612

 

软件开发高手须掌握的4大SQL精髓语句(三)

http://blog.csdn.net/magenfeng/article/details/8015093

 

 

软件开发高手须掌握的4大SQL精髓语句(二)

http://blog.csdn.net/magenfeng/article/details/8003558

 

软件开发高手须掌握的4大SQL精髓语句(一)

http://blog.csdn.net/magenfeng/article/details/7969385

 

 

 

《程序员》“特别推荐”了“万能数据库查询分析器”:

 

在《程序员》2007第2期的“新产品&工具点评”部分,编辑“特别推荐”了“万能数据库查询分析器”发布。

http://blog.csdn.net/magenfeng/article/details/7192368

 

 

              马根峰本人的微信公众号:

              万能数据库查询分析器

 马根峰的博客:

CSDN博客:http://blog.csdn.net/magenfeng

新浪博客:  http://blog.sina.com.cn/magenfeng

官方网址:   http://www.unitedpowersoft.com/



                                       

                                                更多精彩文章,技术分享,敬请期待




 

posted on 2012-09-12 00:22  吴一达  阅读(228)  评论(0编辑  收藏  举报

导航