LeetCode MySQL 1581. 进店却未进行过交易的顾客

2021-09-06 11:41:46 浏览数 (1)

1. 题目

表:Visits

代码语言:javascript复制
 ------------- --------- 
| Column Name | Type    |
 ------------- --------- 
| visit_id    | int     |
| customer_id | int     |
 ------------- --------- 

visit_id 是该表的主键。 该表包含有关光临过购物中心的顾客的信息。

表:Transactions

代码语言:javascript复制
 ---------------- --------- 
| Column Name    | Type    |
 ---------------- --------- 
| transaction_id | int     |
| visit_id       | int     |
| amount         | int     |
 ---------------- --------- 

transaction_id 是此表的主键。 此表包含 visit_id 期间进行的交易的信息。 有一些顾客可能光顾了购物中心但没有进行交易。 请你编写一个 SQL 查询,来查找这些顾客的 ID ,以及他们只光顾不交易的次数。

返回以任何顺序排序的结果表。

查询结果格式如下例所示:

Visits

代码语言:javascript复制
 ---------- ------------- 
| visit_id | customer_id |
 ---------- ------------- 
| 1        | 23          |
| 2        | 9           |
| 4        | 30          |
| 5        | 54          |
| 6        | 96          |
| 7        | 54          |
| 8        | 54          |
 ---------- ------------- 

Transactions

代码语言:javascript复制
 ---------------- ---------- -------- 
| transaction_id | visit_id | amount |
 ---------------- ---------- -------- 
| 2              | 5        | 310    |
| 3              | 5        | 300    |
| 9              | 5        | 200    |
| 12             | 1        | 910    |
| 13             | 2        | 970    |
 ---------------- ---------- -------- 

Result 表:

代码语言:javascript复制
 ------------- ---------------- 
| customer_id | count_no_trans |
 ------------- ---------------- 
| 54          | 2              |
| 30          | 1              |
| 96          | 1              |
 ------------- ---------------- 

ID = 23 的顾客曾经逛过一次购物中心,并在 ID = 12 的访问期间进行了一笔交易。 ID = 9 的顾客曾经逛过一次购物中心,并在 ID = 13 的访问期间进行了一笔交易。 ID = 30 的顾客曾经去过购物中心,并且没有进行任何交易。 ID = 54 的顾客三度造访了购物中心。在 2 次访问中,他们没有进行任何交易,在 1 次访问中,他们进行了 3 次交易。 ID = 96 的顾客曾经去过购物中心,并且没有进行任何交易。 如我们所见,ID 为 30 和 96 的顾客一次没有进行任何交易就去了购物中心。顾客 54 也两次访问了购物中心并且没有进行任何交易。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/customer-who-visited-but-did-not-make-any-transactions 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

代码语言:javascript复制
# Write your MySQL query statement below
select customer_id, count(*) count_no_trans
from
(
    select customer_id, visit_id
    from Visits v
    where v.visit_id not in
    (
        select distinct t.visit_id from Transactions t
    )
) tab
group by customer_id
代码语言:javascript复制
# Write your MySQL query statement below
select customer_id, count(*) count_no_trans
from Visits v
where v.visit_id not in
(
    select distinct t.visit_id from Transactions t
)
group by customer_id

0 人点赞