求职指南!给数据开发的SQL面试准备路径!

语言: CN / TW / HK

highlight: a11y-dark

我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第24篇文章,点击查看活动详情

大量的数据科学职位需要精通 SQL,它也是数据分析师、数据科学家、数据建模岗最常考核的面试技能。在本篇内容中 ShowMeAI 将梳理汇总所有面试 SQL 问题,按照不同的主题构建练习专项块,要求职的同学们可以按照对应板块内容进行专项击破与复习。

本篇内容借助于LeetCode平台,它是面试刷题演练的绝佳资源,内容覆盖大家熟知的数据结构算法和 SQL等。 LeetCode 将问题分为简单、中等和困难的难度级别,SQL板块的一个问题是它没有对它们做很好的分类,大家可以参考 ShowMeAI 在本篇的内容板块分类方式。

我们每个板块的内容都会指向 LeetCode 问题的对应链接,大家可以刷题和定向复习。

💡 学习计划时间表

我们建议最佳的节奏是1天一个板块,每天 2-4 个 SQL 问题(就如我们在下面划分的板块)。 这个节奏下你应该可以充分掌握并巩固对应的主题。

当然,如果你是资深玩家,可以跳过里面的基础板块,专注于更中级和高级的主题(比如第8,9,10天的内容)。

对于 SQL 更详尽的内容,欢迎大家查阅ShowMeAI制作的速查表,快学快用:

💡 学习计划

💦 第1天:选择和过滤

这个板块主要针对 SQL 的SELECT语句,掌握使用它从一个或多个表中选择列字段,配合WHERE语句设定一个或多个条件。 - 📘单列条件选择:Article Views I - 📘多条件选择:Big Countries - 📘过滤具有空值的列:Find Customer Referee - 📘选择第二大的值:Second Highest Salary

💦 第2天:表关联

SQL中有 4 种主要的连接类型: INNER JOIN(或者 JOIN), LEFT JOIN / RIGHT JOIN, FULL OUTER JOIN, 和 CROSS JOIN

SQL中的UNION函数将两个或多个 select 语句的结果集组合成一个结果。

SQL UNION ALL函数保留重复的行。 - 📘左/右/外连接:Combine Two Tables - 📘全外连接:Employees With Missing Information - 📘选择重复行:Duplicate Emails - 📘将列重新排列为行值:Rearrange Products Table

💦 第3天:分组聚合

SQL中GROUP BY语句根据一列或多列的值对行进行分组,每组返回一行。分组之后可以对每个组执行聚合函数,例如 SUMCOUNT。 - 📘分组和聚合:Daily Leads and Partners - 📘join与分组:Customer Who Visited but Did Not Make Any Transactions - 📘带where的分组:The Latest Login in 2020

💦 第4天:过滤分组

SQL HAVING子句为定义的组指定条件 GROUP BY. 这通常用于过滤由分组和聚合产生的行。 - 📘空值过滤与分组求和:Top Travellers - 📘分组搭配having语句:Actors and Directors Who Cooperated At Least Three Times

💦 第5天:CASE语句

SQL CASE语句判断符合的条件并返回该条件下对应的结果,类似在其他编程语言中的if语句。 - 📘带条件计算值:Calculate Special Bonus - 📘对数据关系进行分类:Tree Node - 📘条件判断&求和:Capital Gain/Loss - 📘数据透视表:Reformat Department Table

💦 第6天:子查询

SQL 子查询是嵌套在另一个查询中的查询,我们可以把一个查询的结果,用到另一个查询中。 - 📘Sales Person:子查询中的join - 📘Market Analysis I:join中的子查询

💦 第7天:更新&删除

SQL中的UPDATE语句用于更改表中的现有数据。

SQL中的DELETE语句用于从表中删除一行或多行。 - 📘反转字段的值:Swap Salary - 📘删除重复行:Delete Duplicate Emails

💦 第8天:字符串处理

SQL中有很多字符串处理函数,例如UPPER, LOWER, CONCAT, GROUP_CONCAT, TRIM,以及正则表达式的使用。 熟悉一些常见的 SQL 字符串函数 📘在这里 。 - 📘Fix Names in a Table:仅首字母大写 - 📘Group Sold Products By The Date:与 group by 连接 - 📘Patients With a Condition:过滤包含子字符串的字符串

💦 第9天:分析函数

SQL中 - FIRST_VALUE()LAST_VALUE()分析函数分别返回一组有序值中的第一个值和最后一个值; - LAG()窗口函数提供对前一行或多行数据的访问; - LEAD()窗口函数提供对下一行或多行数据的访问。

对应考题 - 📘Consecutive Numbers:选择连续值 - 📘Department Highest Salary:获取分区头部 - 📘Exchange Seats:每两行交换一次

💦 第10天:窗口函数

常用&面试常考的RANK窗口函数是 ROW_NUMBER(), RANK(), DENSE_RANK()NTILE() - 📘Rank Scores:得分排名 - 📘Department Top Three Salaries:分区前 3 名

「其他文章」