SQL有很多非常强大的功能,但是在数据科学的面试中,大多数公司只会问你少数几个核心概念。下文中的10个概念是面试中最常出现并且在现实生活中的应用最多的。
在本文中,我将给大家带来我认为的10个最重要SQL概念。如果你正在准备数据科学面试时,你可以集中时间在理解这些概念上。
你可能会看到很多需要使用CASE WHEN语句的问题,这只是因为它是一个多功能的概念。
如果要根据其他变量分配某个值或类,则可以使用它编写复杂的条件语句。
很多人不知道的是,该语句还允许我们透视数据。例如,如果你有一个 month 列,并且希望为每个月创建一个单独的列,则可以使用CASE WHEN语句来透视数据。
示例问题:编写一个SQL查询来重新格式化表,以便每个月都有一个revenue列。
Initial table: +------+---------+-------+ | id | revenue | month | +------+---------+-------+ | 1 | 8000 | Jan | | 2 | 9000 | Jan | | 3 | 10000 | Feb | | 1 | 7000 | Feb | | 1 | 6000 | Mar | +------+---------+-------+ Result table: +------+-------------+-------------+-------------+-----+-----------+ | id | Jan_Revenue | Feb_Revenue | Mar_Revenue | ... | Dec_Revenue | +------+-------------+-------------+-------------+-----+-----------+ | 1 | 8000 | 7000 | 6000 | ... | null | | 2 | 9000 | null | null | ... | null | | 3 | null | 10000 | null | ... | null | +------+-------------+-------------+-------------+-----+-----------+
SELECT DISTINCT 是你一定要时刻牢记的东西,最常见的用法是将 SELECT DISTINCT 语句与聚合函数进行结合。
例如,如果我们有一个显示客户订单的表,则可能会要求我们计算每个客户的平均订单数。在这种情况下,我们希望将订单总数计入客户总数中。如下所示:
SELECT COUNT(order_id) / COUNT(DISTINCT customer_id) as orders_per_cust FROM customer_orders
在这里可以和上面的第2点相结合,你需要对聚合函数有很强的理解,比如 min,max,sum,count 等等…这也意味着你应该对 groupby 和 HAVING 子句有很好的理解。我强烈建议你花点时间来解决实践问题,因为有一些创造性的方法可以使用聚合函数。
示例问题:编写一个SQL查询,在名为 Person 的表中查找所有重复的电子邮件。
+----+---------+ | Id | Email | +----+---------+ | 1 | a@b.com | | 2 | c@d.com | | 3 | a@b.com | +----+---------+ ANSWER: SELECT Email FROM Person GROUP BY Email HAVING count(Email) > 1
对于那些对 SQL 比较陌生或有一段时间没有使用过 SQL 的人来说,很容易混淆左连接和内部连接,我们必须清楚地理解每个连接如何获得不同的结果。在许多面试问题中,你都会被要求做一些连接,在某些情况下,选择左或者右,都关系到正确和错误的答案。
SQL一般会通过自联接将表与自身进行联接,你可能会认为这没用,但是很快你就会为之感到惊讶。在许多实际设置中,数据存储在一个大表中,而不是许多小表中。在这种情况下,可能需要自连接来解决独特的问题。
让我们看一个例子。
示例问题:下面是一个给定的 Employee 表,需要编写一个SQL查询,找出收入高于经理的员工。在该表中,Joe是唯一一个收入高于经理的员工。
+----+-------+--------+-----------+ | Id | Name | Salary | ManagerId | +----+-------+--------+-----------+ | 1 | Joe | 70000 | 3 | | 2 | Henry | 80000 | 4 | | 3 | Sam | 60000 | NULL | | 4 | Max | 90000 | NULL | +----+-------+--------+-----------+ Answer: SELECT a.Name as Employee FROM Employee as a JOIN Employee as b on a.ManagerID = b.Id WHERE a.Salary > b.Salary
子查询,也称为内部查询或嵌套查询,是查询中的查询,并且嵌入在WHERE子句中。 这是解决需要按顺序进行多个查询才能产生给定结果的独特问题的好方法。子查询和 WITH AS 语句在查询时都非常有用,因此你一定要知道如何使用它们。
示例问题:假设一个网站包含两个表,Customers 表和 Orders 表。 编写SQL查询,用来查找所有从不订购任何商品的客户。
Table: Customers. +----+-------+ | Id | Name | +----+-------+ | 1 | Joe | | 2 | Henry | | 3 | Sam | | 4 | Max | +----+-------+ Table: Orders. +----+------------+ | Id | CustomerId | +----+------------+ | 1 | 3 | | 2 | 1 | +----+------------+ Answer: SELECT Name as Customers FROM Customers WHERE Id NOT IN ( SELECT CustomerId FROM Orders )
字符串函数非常重要,尤其是在处理不干净的数据时。 因此,很多公司在面试时可能会在字符串格式和操作方面对你进行测试,来检测你是否知道如何操作数据。
字符串格式包括以下内容:
EXTRACT
本文链接:
https://www.bigbaik.com/network/3465.html
免责声明:本文内容来自互联网,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系删除。