leetcode607. 销售员(SQL)
给定 3 个表: salesperson, company, orders。
 输出所有表 salesperson 中,没有向公司 'RED' 销售任何东西的销售员。
解释
 输入
表: salesperson
+----------+------+--------+-----------------+-----------+
 | sales_id | name | salary | commission_rate | hire_date |
 +----------+------+--------+-----------------+-----------+
 |   1      | John | 100000 |     6           | 4/1/2006  |
 |   2      | Amy  | 120000 |     5           | 5/1/2010  |
 |   3      | Mark | 65000  |     12          | 12/25/2008|
 |   4      | Pam  | 25000  |     25          | 1/1/2005  |
 |   5      | Alex | 50000  |     10          | 2/3/2007  |
 +----------+------+--------+-----------------+-----------+
 表 salesperson 存储了所有销售员的信息。每个销售员都有一个销售员编号 sales_id 和他的名字 name 。
表: company
+---------+--------+------------+
 | com_id  |  name  |    city    |
 +---------+--------+------------+
 |   1     |  RED   |   Boston   |
 |   2     | ORANGE |   New York |
 |   3     | YELLOW |   Boston   |
 |   4     | GREEN  |   Austin   |
 +---------+--------+------------+
 表 company 存储了所有公司的信息。每个公司都有一个公司编号 com_id 和它的名字 name 。
表: orders
+----------+------------+---------+----------+--------+
 | order_id | order_date | com_id  | sales_id | amount |
 +----------+------------+---------+----------+--------+
 | 1        |   1/1/2014 |    3    |    4     | 100000 |
 | 2        |   2/1/2014 |    4    |    5     | 5000   |
 | 3        |   3/1/2014 |    1    |    1     | 50000  |
 | 4        |   4/1/2014 |    1    |    4     | 25000  |
 +----------+----------+---------+----------+--------+
 表 orders 存储了所有的销售数据,包括销售员编号 sales_id 和公司编号 com_id 。
输出
+------+
 | name | 
 +------+
 | Amy  | 
 | Mark | 
 | Alex |
 +------+
 解释
根据表 orders 中的订单 '3' 和 '4' ,容易看出只有 'John' 和 'Pam' 两个销售员曾经向公司 'RED' 销售过。
所以我们需要输出表 salesperson 中所有其他人的名字。
  
   - 
    
     
    
    
     
      select name
     
    
- 
    
     
    
    
     
      from salesperson
     
    
- 
    
     
    
    
     
      where sales_id not in(select sales_id 
     
    
- 
    
     
    
    
      from orders 
     
    
- 
    
     
    
    
      where com_id=(select com_id from company where name='RED'));
     
    
 not in内部:把记录里和RED公司的id有关的个人查出来即可。
然后判断没关系的,不在此名单中。
文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。
原文链接:fantianzuo.blog.csdn.net/article/details/104394421
- 点赞
- 收藏
- 关注作者
 
             
           
评论(0)