北美求职 | 谷歌数据分析师教你高效解决SQL问题
北美求职 | 谷歌数据分析师教你高效解决SQL问题
篱笆资讯
北美求职 | 谷歌数据分析师教你高效解决SQL问题
谷歌数据分析师教你高效解决SQL问题
SQL问题的解题思路
我们在面试SQL问题的时候,经常会觉得怎么数据这么多好复杂,写着写着就忘记了逻辑不知道怎么写了。我有三点小tips分享给大家。
1、work backwards
先想一下你最后要的表是什么样的,primary key是什么,summary stats是什么,然后从已有的表里面如何推到你想要的表。这个步骤我建议大家think out loud。面试中最忌讳自己在默默的想,不和面试官交流,你在展现你的思路的时候,既能帮助你更好理清思路,也能保持和面试官的交流。
 
2、巧用with语句
当你的语句超过两个from的时候,整个script就会非常的复杂,所以建议用with语句,每次需要改变primary key的时候都建一个新表,合理命名让你在下一步可以直接用简单的column name
 
3、思考corner case
如果你的表格里有null值,你会怎么处理?根据题目的条件,是不是用别的值代替?如果你的分母可能是0,怎么办?是不是要用safe_divide代替普通的slash/。
SQL 面试问题:
1、group by 之间的区别
2、how to improve data processing efficiency
3、distinct most costly than group by
4、use sample data to test first, then run the whole process
4、don't order by in not important output
6、most frequent errors in running SQL query null
7、having vs where
8、use safe_divide instead of /
 
SQL面试必备的高阶知识点
准备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子句。
coffee 直连行业大牛导师,1v1模拟面试与求职指导
mentors
airplay 实战与求职精品课程
数据科学
软件工程
人工智能
金融商科
产品经理
产品设计
bookmark 2000+名企面试真题
amazon google tiktok microsoft meta