谷歌数据分析师: SQL面试必备的高阶知识点
谷歌数据分析师: SQL面试必备的高阶知识点
篱笆资讯
谷歌数据分析师: SQL面试必备的高阶知识点
SQL 是用于访问和处理数据库的标准的计算机语言,SQL面试也确实有一定难度。为了帮助大家攻破这一关,Eva老师今天想跟大家分享一下,准备SQL面试时有哪些比较难的知识点要掌握,并且有哪些题是必会的。这里我默认大家都会简单的SQL语句比如select,where,group by 等等。
 
高频考点:
1.window function
window function在我看来是不改变data的行数的情况下,把group by的一些stats分到了每一行。比如说 sum(revenue) over (partition by country) 就是把每个country的revenue加了一下,行数和原来不变,所有美国的行的这个数据都是美国revenue的总和。常见的window function还有RANK等。在这里着重讲一下RANK()、DENSE_RANK()、ROW_NUMBER()三者排序的不同:
RANK()返回的是不持续的编号,例如100, 101, 101, 102返回的编号将是1,2,2,4;
DENSE_RANK()返回的是持续的编号,例如100, 101, 101, 102返回的编号是1,2,2,3;
ROW_NUMBER()返回的是持续不重复的编号,例如100, 101, 101, 102返回的编号将是1,2,3,4;
 
2. join的区别
一共有5种join语句,left, right, inner, full outer, cross join。目的都是一样的,就是用相同的key把两张表的column并起来。
left就是keep所有在左边的数据的行数,无论右边能不能找到对应的key。inner就是只keep两张表共同的key,full outer join就会把两张表所有的行保留。cross join会把两张表每一行都和另一张表的每一行join,这个计算量非常大,一般要尽量避免。

 

3.随机抽样【低频】
有时候面试会考到如何在SQL表中随机抽样,这时候就要用到RAND()函数。
通常被面试者的第一反应是:SELECT * FROM table ORDER BY RAND() LIMIT 10000,这样来抽取一万个样本。但是如果数据量很大,上述的做法太慢了:它对于每一行都用了RAND()函数,这一步复杂度是O(n);然后再排序,这一步的复杂度O(nlogn)。
所以可以改用这个方法:SELECT * FROM table WHERE RAND() <= .3,这样可以抽出约30%的数据,然后再用TOP或者LIMIT子句。
 
以上就是Eva老师为大家总结的SQL面试高阶知识点啦,请大家注意查收!对相关信息感兴趣的小伙伴记得持续关注篱笆咨询哟。
 
coffee 直连行业大牛导师,1v1模拟面试与求职指导
mentors
airplay 实战与求职精品课程
数据科学
软件工程
人工智能
金融商科
产品经理
产品设计
bookmark 2000+名企面试真题
amazon google tiktok microsoft meta