软件开发高手须掌握的4大SQL精髓语句(一)
马根峰
( 广东联合电子收费股份有限公司, 广州 510300)
作者博客:
优快云博客:http://blog.youkuaiyun.com/magenfeng
新浪博客: http://blog.sina.com.cn/magenfeng
QQ空间: http://user.qzone.qq.com/630414817/main#!
0 引言
随着计算机在社会各领域应用的深入,软件开发人员不得不面临着或多或少的数据处理、数据库访问。
在SQL(Structured Query Language)语言DML中,有四大语句堪称其精髓部分。下面就讲述一下其中之一, Case When 语句的用法。本文介绍用它实现数据仓库中的维度转换,来将数据展现给分析人员来进行决策支持与分析。
CASE WHEN Conition
THEN 。。。
ELSE 。。。
END
1 数据仓库中的维度转换
在数据仓库数据展现中,我们通常要用到将数据表进行维度转换。如数据仓库中某一关系模式
Vehsm (Roadno, Year , Fluxcount,。。。)
对于数据分析人员来说,他们更想了解某一条高速公路在一段时间内车流量的变化情况,那最好就是将关系表 TB_ADFLUXCOLT 以下面的关系模式来展现
Vehcount_Trans (Roadno, Year Fluxcount 1, .。。。, Year Fluxcount n)
下面笔者就分别以Case When语句、BrioQuery来分别演示一下如何实现维度转换。
2 Case When语句来实现维度转换
下面就以DB2数据库为例,以“万能数据库查询分析器” 中文版本《DB 查询分析器》、英文版本《DB Query Analyzer》作为客户端工具来来演示一下Case When 语句如何实现维度转换。
selectuu.roadno,rr.roadname,
sum(casewhenuu.year=2009thenuu.FLUXCOUNTelse0end) asyear_2009,
sum(casewhenuu.year=2010thenuu.FLUXCOUNTelse0end) asyear_2010,
sum(casewhenuu.year=2011thenuu.FLUXCOUNTelse0end) asyear_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;
图3 DB Query Analyzer 中输入要执行的Case When语句
图4 DB Query Analyzer 执行Case When语句
3 BrioQuery来实现维度转换
在数据仓库工具中,BrioQuery提供了比较强大的数据展现功能,能方便地实现上面的维度转换。
但对于大数据量表的维度转换来说,则几乎无法完成,笔者在中文核心刊物《电信科学》2003年11期《广东电信公话200专用话机话务动态分析系统的构建》文章中,详细地介绍了“广东电信公话200专用话机话务动态分析系统”中是如何实现这一点的,这个话务动态系统是自己以前在广东省电信有限公司工作的时候独自开发的,有兴趣的话,可以看
本人的优快云博客的博文:
“广东电信公话200专用话机话务动态分析系统的构建”
http://blog.youkuaiyun.com/magenfeng/article/details/7691403
DB 查询分析器 5.03 下载地址:
http://xiazai.zol.com.cn/detail/27/264455.shtml
DB Query Analyzer 5.03下载地址:
http://xiazai.zol.com.cn/detail/43/420901.shtml
软件开发高手须掌握的4大SQL精髓语句 系列:
软件开发高手须掌握的4大SQL精髓语句(四)
http://blog.youkuaiyun.com/magenfeng/article/details/8050612
软件开发高手须掌握的4大SQL精髓语句(三)
http://blog.youkuaiyun.com/magenfeng/article/details/8015093
软件开发高手须掌握的4大SQL精髓语句(二)
http://blog.youkuaiyun.com/magenfeng/article/details/8003558
软件开发高手须掌握的4大SQL精髓语句(一)
http://blog.youkuaiyun.com/magenfeng/article/details/7969385
《程序员》“特别推荐”了“万能数据库查询分析器”:
在《程序员》2007第2期的“新产品&工具点评”部分,编辑“特别推荐”了“万能数据库查询分析器”发布。
http://blog.youkuaiyun.com/magenfeng/article/details/7192368
《DB 查询分析器》使用技巧 系列:
《DB 查询分析器》使用技巧之(一)
http://blog.youkuaiyun.com/magenfeng/article/details/7189174
《DB 查询分析器》使用技巧之(二)
http://blog.youkuaiyun.com/magenfeng/article/details/7189176
《DB 查询分析器》使用技巧之(三)
http://blog.youkuaiyun.com/magenfeng/article/details/7192402
《DB 查询分析器》使用技巧之(四)
http://blog.youkuaiyun.com/magenfeng/article/details/7195059
《DB 查询分析器》使用技巧之(五)
http://blog.youkuaiyun.com/magenfeng/article/details/7196846
《DB 查询分析器》使用技巧之(六)
http://blog.youkuaiyun.com/magenfeng/article/details/7164432
《DB 查询分析器》使用技巧之(七)
http://blog.youkuaiyun.com/magenfeng/article/details/7197934