zoukankan      html  css  js  c++  java
  • 软件开发高手须掌握的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/



                                           

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




  • 相关阅读:
    Run
    axios+Qs请求数据转表单格式
    Vue开发电子书app
    vue2.5开发去哪儿了流程
    ES6重度学习 demo实例
    JS 数组, 对象的增查改删(多语法对比)
    格式化时间戳的n种方法
    Vue中你忽略的点
    vscode代码格式化
    分隔符
  • 原文地址:https://www.cnblogs.com/wuyida/p/6300811.html
Copyright © 2011-2022 走看看