comments | difficulty | edit_url | tags | |
---|---|---|---|---|
true |
简单 |
|
Customers
表:
+-------------+---------+ | Column Name | Type | +-------------+---------+ | id | int | | name | varchar | +-------------+---------+ 在 SQL 中,id 是该表的主键。 该表的每一行都表示客户的 ID 和名称。
Orders
表:
+-------------+------+ | Column Name | Type | +-------------+------+ | id | int | | customerId | int | +-------------+------+ 在 SQL 中,id 是该表的主键。 customerId 是 Customers 表中 ID 的外键( Pandas 中的连接键)。 该表的每一行都表示订单的 ID 和订购该订单的客户的 ID。
找出所有从不点任何东西的顾客。
以 任意顺序 返回结果表。
结果格式如下所示。
示例 1:
输入: Customers table: +----+-------+ | id | name | +----+-------+ | 1 | Joe | | 2 | Henry | | 3 | Sam | | 4 | Max | +----+-------+ Orders table: +----+------------+ | id | customerId | +----+------------+ | 1 | 3 | | 2 | 1 | +----+------------+ 输出: +-----------+ | Customers | +-----------+ | Henry | | Max | +-----------+
列举所有已存在订单的客户 ID,使用 NOT IN
找到不存在其中的客户。
import pandas as pd
def find_customers(customers: pd.DataFrame, orders: pd.DataFrame) -> pd.DataFrame:
# Select the customers whose 'id' is not present in the orders DataFrame's 'customerId' column.
df = customers[~customers["id"].isin(orders["customerId"])]
# Build a DataFrame that only contains the 'name' column and rename it as 'Customers'.
df = df[["name"]].rename(columns={"name": "Customers"})
return df
# Write your MySQL query statement below
SELECT name AS Customers
FROM Customers
WHERE
id NOT IN (
SELECT customerId
FROM Orders
);
使用 LEFT JOIN
连接表格,返回 CustomerId
为 NULL
的数据。
# Write your MySQL query statement below
SELECT name AS Customers
FROM
Customers AS c
LEFT JOIN Orders AS o ON c.id = o.customerId
WHERE o.id IS NULL;