最近压力较大,需要转换下心情,最有成就感的事情就是我可以熟练使用SQL啦,给自己鼓鼓掌,哈哈。说是数据小白也算不上,毕竟也是学过统计的人。。。不过统计跟SQL的使用还是很不一样的,也没啥关系。很久以前自学过SQL语法,但真正开始使用并进阶也就是最近一个来月的事情啦。
我的学习和进阶过程总结来看分为以下几步:
1、自学基础的SQL语法,基础的语法还是比较简单的,主要在表的关联上需要多下点功夫:
由于业务情况,我需要涉及的只是select的语法,并不需要了解更改数据的语法(我也没有权限),本文也只针对数据查询。
http://www.w3school.com.cn/sql/index.asp,这个是学习SQL基本语法的一个网络教程,个人感觉写的通俗易懂,还可以进行测验。
在业务使用上查询语句用到的就是最基础的句型:
SELECT
字段1,2,3,4...(此处的字段可以为公式计算例如sum和count等)
FROM
表
WHERE
条件1,2,3,4....
GROUP BY
字段1,2...(此处字段为非公式计算的字段)
这个基础句型还可以加order by什么的,因为我自己不用,所以就不写啦。
表关联的最基础的句型:
表A JOIN 表B ON 条件1,2...
(WHERE 条件1,2...)
上边的基础句型比较简单,表关联比较复杂一点,涉及到各种关联形式,需要从逻辑上搞明白才能应用自如。http://blog.csdn.net/xiao2004/article/details/6562435,这个讲表关联讲的比较清晰易懂。
2、学习和了解数据上报规则,熟悉埋点文档,这个主要是为了满足业务需求进行提数时,对基本的提数逻辑有个了解:
我涉及的业务是http上报的,视频相关,所以为了理解基础的逻辑,需要对数据上报规则进行学习和了解。例如各个数据接口的情况,视频起播、内容播放和时长的上报规则及计算。具体来讲,如果不知道数据上报的时候播放器有init、play和time几个动作,并有各自代表的含义,就没办法清楚理解vv和cv的提数逻辑。
熟悉埋点文档,这个是需要跟数据上报规则一块了解的。例如,一次播放记录唯一标识字段是什么,在什么样的情况下会产生新的值。这个会对提数的时候用哪个字段来进行计算产生影响,唯一标识字段十分重要,一般是id类的值,需要重点了解。
这块主要是根据各自业务情况来学习和了解的,同时也是不断动态变化,需要不断去学习的。
3、了解数据库表及其统计口径,根据业务需求理解提数逻辑,试错性的进行提数和调整:
了解库表及统计口径就到了具体实施层面了,当接到需求要去提数的时候,至少要了解你要提的数的数据接口,存在哪个表里边,涉及哪些字段,同时需要限定哪些条件来达到你需要的结果。
关于这块的学习,有几个小技巧:
首先,select * from 表 where ... limit 100 是快速直观了解一个表的方法,你可以取出你负责的业务线的100条数据,看看这个表里都存有哪些字段,每个字段的意义是什么,唯一标识字段是哪个。
其次,select distinct 字段 from 表 where ...是快速了解某个字段的方法,如果你预计该字段值很多,也可以设置一下limit。
对库表和字段有了了解之后就可以根据业务需求进行提数了,因为是初学者,同时对库表的理解不会很深刻,所以肯定有一个试错的过程。在这个过程中逻辑很重要,非常重要。是的,这时候主要考验的不是SQL语法,而是逻辑。
以7日新增留存为例,7日新增留存是说某一天的新增用户在之后第七天有多少留存了下来,那么提数的逻辑是什么呢?某一天的DNU与第七天的DAU的交集。为什么强调逻辑,在这个最基本的逻辑指导下才能有效的试错,不然一旦跑的过程中提示出错你甚至不知道该从何查起。在我自己试错的过程中,我碰到了各种各样的问题,都是在心中明晰此逻辑的前提下进行调整的,包括后来这个交集再去跟别的表做关联进一步限制设备类型和型号也会变得十分明晰(即把先取出来这个交集作为一个临时表,然后再去跟我需要关联的表进一步关联限定)。
这也是我现在自信能够熟练使用SQL的原因,基本的方法和逻辑掌握之后,即使遇到新的需求和新的问题,我也知道该如何解决。
4、积累和总结学习方法,提高技能:
首先基础的语法是要吃透的,这个不光是之后应用的基础,也是快速看懂别人写的SQL语句的基础。这个也是个持续和循序渐进的过程,比如我一开始用到的关联都是join,inner join之类的,直到我遇到一个问题,需要将表A中与表B的交集部分刨除,取剩下的部分(如下图),我就用上边发过的那个关联表的链接重新学习这类关联的取法,然后再提数。
其次,站在巨人的肩膀上学习,我觉得这是很不错的学习方式。因为我是接手另一个同事的业务,她将最常用的几个指标的sql语句给了我,我边用边学,同时遇到困难向她请教;同时大数据部给的库表的介绍和语句的案例也是学习的好对象。从别人的SQL学习,与别人交流可以学到自己独自钻研无法想通的事情。