暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据科学面试:最常见的5道 SQL JOIN 题目及解答

原创 小小亮 2022-08-26
1762

介绍

SQL代表结构化查询语言

顾名思义,SQL 遵循结构化模式从关系数据库中查询或获取数据。在 SQL 中, JOIN 是强大的工具,可以更轻松地获取存储在不同表中的数据。

在现实世界中,公司通常将数据存储在不同的小表上。所以获取分析所需的数据本质上需要经过不同表的连接过程。因此,面试官总是想知道您使用 SQL JOIN 的效率如何。这就是为什么在数据科学工作面试中,JOIN 总是最受欢迎的话题。


我在这里列出了关于 SQL JOIN 的 5 个最常见的面试问题以及如何回答它们。我通过我在不同公司的面试经历收集了他们。

开始吧…

什么是 SQL JOIN 及其用途?

这是最直接的面试问题。

SQL中的JOIN命令用于根据这些表之间的公共列组合来自两个或多个表的数据。

当您需要的数据位于不同的表中时,SQL JOIN 允许您将这些表组合在一个或多个公共列中。然后您可以选择记录,这些记录可能有也可能没有来自两个表的列。

SQL JOIN 有哪些不同类型?

根据您希望如何组合两个或多个表并选择记录,SQL 中有 4 种基本类型的 JOIN。

  • INNER JOIN: 合并两张表,使得执行连接操作的公共列在两张表中都有匹配的值。因此,它用于检索两个表中共有的记录。可以只写 JOIN,而不是写 INNER JOIN。默认情况下,它将被视为 INNER JOIN。
  • LEFT JOIN:用于检索左表中的所有记录和右表中的匹配记录。但是,当右表中没有匹配的行时,这种类型的 JOIN 对左表中的某些行返回 NULL。此连接也称为 LEFT OUTER JOIN。
  • RIGHT JOIN:用于检索右表的所有记录和左表的匹配记录。与前面的join类型类似,对于右表中的某些记录,当左表中没有匹配的行时,这种JOIN类型返回NULL。此连接也称为 RIGHT OUTER JOIN。
  • FULL JOIN:顾名思义,它用于从两个表中检索所有记录。因此,此连接的结果集将包含两个表中的所有行。当左表或右表中没有匹配的行时,在该位置返回 NULL 值。此连接也称为 FULL OUTER JOIN

在这里,不要只说明 JOIN 的类型,而应该尝试用 1-2 句话来解释它们。这当然会让面试官知道你对连接有更多的了解。

SQL 中的 CROSS JOIN 是什么?

这将返回两个表的所有可能组合。所以第一个表的每一行与第二个表的每一行结合。

最终,如果不使用子句,则返回的记录总数CROSS JOIN本质上是两个表中记录数的乘积。WHERE

从这个 JOIN 生成的结果称为两个表的笛卡尔积

与其他类型的连接不同,您不需要在 CROSS JOIN 中提及 ON 子句。它可以很简单,如下所示。

SELECT t1.column1, t1.column2, t1.column3
FROM Table1 AS t1
CROSS JOIN Table2 AS t2

SQL 中的 SELF JOIN 是什么,什么时候使用它?

这用于将表格与其自身组合。如果您是初学者,这听起来可能令人困惑。但是,它有利于比较同一个表中的行。

请记住,没有SELF JOIN关键字,因此您只需使用JOIN连接中涉及的两个表是同一个表。由于两个表名相同,因此在 SELF JOIN 的情况下必须使用表别名。

编写一个 SQL 查询,找出收入超过经理的员工
——这是最常见的面试问题之一
SELF JOIN

让我们以此为例,创建一个 Dummy_Employees 数据集,如下所示。

SQL 连接

虚拟员工数据集 | 作者图片

并尝试使用此查询找出哪些员工处理的订单比他们的经理多,

SELECT t1.EmployeeName, t1.TotalOrders
FROM Dummy_Employees AS t1
JOIN Dummy_Employees AS t2
ON t1.ManagerID = t2.EmployeeID
WHERE t1.TotalOrders > t2.TotalOrders
结果集

正如预期的那样,它让员工——阿卜杜勒和玛丽亚——比他们的经理——巴勃罗处理的订单多。

我在几乎 80% 的面试中都遇到过这个问题。因此,它是SELF JOIN.

您可以在我最常阅读的一篇文章中阅读有关 SELF JOIN 及其使用的更多信息 –>

最后但并非最不重要,

你如何在 SQL 中加入两个以上的表?

合并多个表与在两个表之间使用 JOIN 相同。

这种join需要连续JOIN操作→首先,你join第一张和第二张表,得到一个中间结果集;然后,您将另一个表连接到此中间表。

让我们使用下面的示例来看看它是如何工作的。

假设您要检索orderIDsales in USDquantity,它们存在于三个不同的表中,如下所示。

假表|  SQL 连接
假桌 | 作者图片

orderID是它们之间的公共列。因此,将在该列上执行 JOIN 操作,如下所示。

SELECT orders.orderID,
       sales.salesUSD,
       products.quantity
FROM orders
INNER JOIN sales
        ON orders.orderID = sales.orderID
INNER JOIN products 
        ON orders.orderID = products.orderID

正如您使用的那样,这仅提供单行输出,INNER JOIN并且仅存orderID = A1234在于所有表中。

加入多个表 | 作者图片

同样,您也可以使用其他类型的 JOIN!

结论

我希望您发现这篇文章有助于了解和理解有关 SQL JOIN 的面试问题。了解不同类型的 JOIN 及其用途肯定会帮助您在面试中取得成功。

最终,您在本文中学到了——

  • SQL JOIN 是什么意思,它的类型是什么
  • SELF JOIN 与其他类型的 JOIN 有何不同
  • CROSS JOIN 在 SQL 中的工作原理
  • 如何使用不同类型的 JOIN 连接 2 个或更多表
  • 如何回答面试中的 SQL JOIN 问题

除了基本的 JOIN 类型,您现在对 CROSS JOIN 和 SELF JOIN 有了更概念性的理解。


原文标题:Top 5 SQL JOIN FAQs for Data Science Interview

原文作者:Suraj Gurav

原文链接:https://www.analyticsvidhya.com/blog/2022/07/top-5-sql-join-faqs-for-data-science-interview/

最后修改时间:2022-10-27 15:03:20
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论