本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

wzatv:如何七周成为数据分析师:SQL,从入门到熟练(2)

时间:2017-08-02 12:33来源:报码现场 作者:118KJ 点击:
北京的数据一下子少了2000,多余的重复值被排除在外。distinct 是去重函数,distinct positionId 会只计算唯一的positionId个数。日常工作中,活跃用户数、文章

北京的数据一下子少了2000,多余的重复值被排除在外。distinct 是去重函数,distinct positionId 会只计算唯一的positionId个数。日常工作中,活跃用户数、文章UV,都是用distinct 计算获得,这是唯一标示符ID的重要作用。

除了count,还有max,min,sum,avg等函数,也叫做聚合函数。用法和Excel没什么区别。

当我们在group by 添加多个字段,它将以多维的形式进行数据聚合。

select city,workYear,count(distinct positionId) from DataAnalyst

group by city,workYear

wzatv:如何七周成为数据分析师:SQL,从入门到熟练

这就是数据分析师常用的多维分析法,通过group by 切分不同的维度进行对比,在不利用BI的情况下,通过SQL进行快速数据分析。

接下来学习逻辑判断,SQL也有if函数,和Excel的用法一摸一样,通过它我们能进行复杂的运算。比如我想统计各个城市中有多少数据分析职位,其中,电商领域的职位有多少,在其中的占比?

industryField是公司的行业领域,虽然我们能用where like 计算出有几个电商的数据分析师,但是占比的计算会比较麻烦,此时可以用if。

select if(industryField like ‘%电子商务%’,1,0) from DataAnalyst

wzatv:如何七周成为数据分析师:SQL,从入门到熟练

上面的公式利用if判断出哪些是电商行业的数据分析师,哪些不是。if函数中间的字段代表为true时返回的值,不过因为包含重复数据,我们需要将其改成positionId。之后,用它与group by 组合就能达成目的了。

select city,

count(distinct positionId),

count(if(industryField like ‘%电子商务%’,positionId,null))

from DataAnalyst

group by city

wzatv:如何七周成为数据分析师:SQL,从入门到熟练

第一列数字是职位总数,第二列是电商领域的职位数,相除就是占比。记住,count是不论0还是1都会纳入计数,所以第三个参数需要写成null,代表不是电商的职位就排除在计算之外。

接下来是新的问题,如果我想找出各个城市,数据分析师岗位数量在500以上的城市有哪些,应该怎么计算?有两种方法,第一种,是使用having语句,它对聚合后的数据结果进行过滤。

select city,count(distinct positionId) from DataAnalyst

group by city having count(distinct positionId) >= 500

wzatv:如何七周成为数据分析师:SQL,从入门到熟练

第二种,是利用嵌套子查询。

wzatv:如何七周成为数据分析师:SQL,从入门到熟练

我们将第一次查询获得的城市职位数的结果,看作一张新的表,利用as 将它命名为t1( table1 的简写),将职位数命名为一个新的字段counts。然后外面再套一层select 过滤出counts >=500。

这种查询方式就叫嵌套子查询,使用场景比较广泛,where 后面也能跟子查询。

很多时候,数据是凌乱的,我们希望结果能够呈现一定的顺序,这时候就用到order by语句。

select city,count(distinct positionId) as counts from DataAnalyst

group by city

order by counts

wzatv:如何七周成为数据分析师:SQL,从入门到熟练

看,数据就按照统计结果升序排列,如果需要降序,则是order by counts desc,后面加一个desc就好了。如果是多个字段,按逗号分隔即可。

我们再来熟悉SQL的常用函数,首先是时间。因为我们的练习数据中没有时间,首先用now创建出一个时间字段。

select now()

直接执行它,就能获得当前的系统时间,精确到秒。其实select不一定后面要跟from。

select date(now())

它代表的是获得当前日期,week函数获得当前第几周,month函数获得当前第几个月。其余还包括,quarter,year,day,hour,minute。

时间函数也包含各种参数,比如week,因为中西方计算第几天是不一样的,西方把周日算作一周中的第一天,而我们习惯周一。

select week(now(),0)

除了以上的日期表达,也可以使用dayofyear、weekofyear 的形式计算。它和上面的部分函数等价。

怎么对时间进行加减法呢?这时候靠date_add函数出马。

select date_add(date(now()) ,interval 1 day)

wzatv:如何七周成为数据分析师:SQL,从入门到熟练

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容