返回介绍

solution / 0100-0199 / 0183.Customers Who Never Order / README

发布于 2024-06-17 01:04:03 字数 2507 浏览 0 评论 0 收藏 0

183. 从不订购的客户

English Version

题目描述

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     |
+-----------+

解法

方法一:NOT IN

列举所有已存在订单的客户 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

使用 LEFT JOIN 连接表格,返回 CustomerIdNULL 的数据。

# 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;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文