LeetCode MySQL 1083. 销售分析 II

2021-02-19 10:00:09 浏览数 (1)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

Table: Product

代码语言:javascript复制
 -------------- --------- 
| Column Name  | Type    |
 -------------- --------- 
| product_id   | int     |
| product_name | varchar |
| unit_price   | int     |
 -------------- --------- 
product_id 是这张表的主键

Table: Sales

代码语言:javascript复制
 ------------- --------- 
| Column Name | Type    |
 ------------- --------- 
| seller_id   | int     |
| product_id  | int     |
| buyer_id    | int     |
| sale_date   | date    |
| quantity    | int     |
| price       | int     |
 ------ ------ --------- 
这个表没有主键,它可以有重复的行.
product_id 是 Product 表的外键.

编写一个 SQL 查询,查询购买了 S8 手机却没有购买 iPhone 的买家。 注意这里 S8 和 iPhone 是 Product 表中的产品。

查询结果格式如下图表示:

代码语言:javascript复制
Product table:
 ------------ -------------- ------------ 
| product_id | product_name | unit_price |
 ------------ -------------- ------------ 
| 1          | S8           | 1000       |
| 2          | G4           | 800        |
| 3          | iPhone       | 1400       |
 ------------ -------------- ------------ 

Sales table:
 ----------- ------------ ---------- ------------ ---------- ------- 
| seller_id | product_id | buyer_id | sale_date  | quantity | price |
 ----------- ------------ ---------- ------------ ---------- ------- 
| 1         | 1          | 1        | 2019-01-21 | 2        | 2000  |
| 1         | 2          | 2        | 2019-02-17 | 1        | 800   |
| 2         | 1          | 3        | 2019-06-02 | 1        | 800   |
| 3         | 3          | 3        | 2019-05-13 | 2        | 2800  |
 ----------- ------------ ---------- ------------ ---------- ------- 

Result table:
 ------------- 
| buyer_id    |
 ------------- 
| 1           |
 ------------- 
id 为 1 的买家购买了一部 S8,但是却没有购买 iPhone,
而 id 为 3 的买家却同时购买了这 2 部手机。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/sales-analysis-ii 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

代码语言:javascript复制
# Write your MySQL query statement below
select distinct buyer_id
from Product p, Sales s
where p.product_id = s.product_id
        and buyer_id not in
                    (
                        select buyer_id
                        from Product p, Sales s
                        where p.product_id = s.product_id
                                and product_name = 'iPhone'
                    )
        and product_name = 'S8'

or

代码语言:javascript复制
# Write your MySQL query statement below
select buyer_id
from Product p, Sales s
where p.product_id = s.product_id
group by buyer_id
having sum(product_name = 'S8') > 0 and sum(product_name = 'iPhone')=0

0 人点赞