ORACLE数据库,刚进电信实习,一个经营分析系统的项目组,主要做运维、数据仓库。最基本的事情就是完成电信方要求的各种报表,需要的能力就是写SQL。目前对简单的SQL语句,关键字都了解,问题是对于复杂SQL很头疼,基本上看不懂,即使拿到别人写的几十行几百行的SQL也是摸不着头脑(我们的报表SQL经常使用多个临时表分步查询来得到目标表)。我知道,关于报表SQL,对表结构、统计口径的熟悉是很重要的,但是我现在即使熟悉,也缺乏写复杂SQL的能力,一个多月还在帮其他人核对数据,太没意思了,所以现在有以下几个问题请教:
1、拿到复杂SQL,看懂它需要一个什么样的思路;
2、写复杂SQL,特别是关于电信行业报表SQL,各种all union,decode来处理很多字段,以实现目标表,各种头痛;
3、另外就是如果有做相同工作的前辈,请教一些需要自己多学哪些知识,如果锻炼能力,比如一些流程SHELL,稽核SHELL,流程配置等等工作。(本人刚去,很多东西知识接触到,不熟悉,不会,但是很想长久做这个工作,并且能够独当一面)
4、请推荐一本关于数据库的书,主要是提高写SQL能力的,基础语法及简单SQL语句最好简略带过的那种。准备在春节期间自己多看看,收假以后找项目经理,希望安排一些实际的工作,比如先从写报表开始。 我现在时间很多,没有什么任务,自己又很想学,也许是因为能力不强,也没找到正确的学习方法,感觉没有提高,又不敢找经理要工作安排。对于我这样一个实习生,真的很困惑。sql报表数据仓库电信工作

解决方案 »

  1.   

    和你初中做数学题一样,先学基础套路,看见复杂的先看整体,再拆分成自己的套路。可以去ITPUB的论坛。
      

  2.   

    电信行业sql。比如如今流行的ocs,cbs,ngbss系统,客户提出来的报表需求都不是很难的,对于sql要求没你想的那么高。不过主要看你的数据库规划,计划几层处理?各个层次有各个层次的作用,这样表之间关联的时候就不会很繁琐,用一般的函数就可以解决问题。不过ocs/cbs定制的报表,要注意多对多的问题,这个就是需求调研方面的了。对你所说的all,union用得比较少,当然还是会用,decode,case when用得比较多。报表用到的sql都不会很复杂,如果复杂了,sql执行效率也不会高到哪里去。排查问题的时候给你增加负担,清晰的层次,简单的sql逻辑才是你发展的方向。对于几百上千行的代码,一般规范漂亮的代码,都有一定的换行,制表格什么的,其实仔细看的话,逻辑不会很复杂的。其实sql都还是比较简单的,难的是业务。想搞清一套系统,那你准备多多加班吧。
      

  3.   

    你先别急,先把基础打好再说。想涉及高级的sql,经常来csdn看看就行了。这里都是别人的问题,是一个很好的学习平台。
      

  4.   

    先把sql格式化一下嘛  toad自带工具