4008-953622
数据分析
数据分析面试必备——SQL你准备好了吗?
发布时间:2020-02-06    信息来源:未知    浏览次数:

  前些天在网上冲浪的时候看到一个案例咨询,问说世界500强的数据分析要不要去,评论区一片爆炸:“楼主能分享一下文科生怎么转行做数据分析吗??”、“SQL、python这些学起来好痛苦!”我看着屏幕苦笑,数据分析岗位现在的热门程度如果要形容的话,基本就是随便抓一个微博网友都知道这个岗位了= =。

  可以说,不是每个数据分析岗都要求python,但是每个数据分析岗都需要会SQL。

  我本人曾在滴滴、美团、平安科技的数据分析类岗位实习过,实习期间会大量运用sql进行取数。也参与了2018年的秋招,做过网易、拼多多、新浪等等公司的数据分析笔试题,还是比较了解SQL常考的题目类型的。

  插播一句,目前已经入职且开始工作啦,欢迎大家阅读我的成长和思考,收获数据分析师的能力栈~

  写这篇文章是希望帮助还没有实战过SQL的小伙伴、或者了解一些SQL语句,但是担心自己了解的太片面的小伙伴。这篇文章主要介绍的是:如果想要面试数据分析岗位,最优先需要掌握的SQL技能是哪些呢?

  (1)除了select 这种基本的语句,我最应该马上掌握的SQL语句和知识是什么?

  本文将从三大块介绍入门SQL需要掌握的语法和知识,分别是最基础的选择(select)和连接(join/union);最常用的函数(distinct/group by/order by等);一些小小的进阶技巧(组内排序、取前百分之多少的值、时间函数)。

  从一个实习和秋招过来人的角度看,这些知识基本够面试的时候用了,如果本身也在数据分析岗位实习或者实习过,可以在评论区讨论或者补充一些也常常用到的SQL知识,大家一起交流进步~ ps. 本文主要做知识点快速突破,具体的实战练习大家必不可少还是要做!

  介绍完了三大块知识后,后续会有常见的SQL面试/笔试题,可以练习和交流~

  left join: 左连接,以左表为准,逐条去右表找可匹配字段,如果有多条会逐次列出,如果没有找到则是NULL;

  right join:右连接,以右表为准,逐条去左表找可匹配字段,如果有多条会逐次列出,如果没有找到则是NULL;

  full outer join: 全连接,包含两个表的连接结果,如果左表缺失或者右表缺失的数据会填充NULL。

  每种join 都有on , on的是左表和右表中都有的字段。join 之前要确保关联键是否去重,是不是刻意保留非去重结果。

  union和union all 均基于列合并多张表的数据,所合并的列格式必须完全一致。union的过程中会去重并降低效率,union all 直接追加数据。union 前后是两段select 语句而非结果集。

  distinct 会对结果集去重,对全部选择字段进行去重,并不能针对其中部分字段进行去重。使用count distinct进行去重统计会将reducer数量强制限定为1,而影响效率,因此适合改写为子查询。

  聚合函数帮助我们进行基本的数据统计,例如计算最大值、最小值、平均值、总数、求和

  在这个例子里也穿插了一个CAST的用法,它常用于string/int/double型的转换。

  rank()排序相同时会重复,总数不会变 ,意思是会出现1、1、3这样的排序结果;

  dense_rank() 排序相同时会重复,总数会减少,意思是会出现1、1、2这样的排序结果。

  to_date函数可以把时间的字符串形式转化为时间类型,再进行后续的计算;

  此外,在网上有大量的sql练习题,我当初是通过w3schools上手的:

  做SQL题的时候注意理解每个题目希望你用的是什么知识点,这样有助于巩固。

  当初我学SQL的时候,盯着《SQL必知必会》翻来覆去的看,但是知识点真的比较多,也比较零碎。在写这篇文章之前,也看过知乎上关于SQL学习的文章,有的比较广泛而全面,有的则很干货,全部是牛客上的SQL题目的解析。基于自己的体会,我写了这篇SQL面试和笔试的入门文章,主旨是快速、清晰的把握重点。希望大家都能快快入门SQL~

分享到:
您使用的浏览器版本过低,不仅存在较多的安全漏洞,也无法完美支持最新的web技术和标准,请更新高版本浏览器!!