V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zhao1014
V2EX  ›  问与答

leetcode 数据库

  •  
  •   zhao1014 · 2020-07-30 17:38:25 +08:00 · 1049 次点击
    这是一个创建于 1358 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Table: Product
    
    +--------------+---------+
    | Column Name  | Type    |
    +--------------+---------+
    | product_id   | int     |
    | product_name | varchar |
    | unit_price   | int     |
    +--------------+---------+
    product_id 是这张表的主键
    Table: Sales
    
    +-------------+---------+
    | 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 表中的产品。
    
    查询结果格式如下图表示:
    
    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
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
    
    select
        distinct s.buyer_id
    from
        sales s,
        product p
    where
        p.product_id = s.product_id and s.buyer_id in
    (select
        s.buyer_id
    from
        sales s,
        product p
    where
        s.product_id = p.product_id and p.product_name ='s8')
        and p.product_name != 'iPhone'
    
    我这么写不知道为什么会错,执行的答案好像是 and p.product_name != 'iPhone'这一段没有生效一样,不明白为什么。
    
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1418 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 17:23 · PVG 01:23 · LAX 10:23 · JFK 13:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.