酒店网站建设策划,南昌企业网站建设公司哪个好,做国外网站做什么内容,企业形象设计的意义大家好#xff0c;我是空空star#xff0c;本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目#xff1a;607. 销售员二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他总结前言 … 大家好我是空空star本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目607. 销售员二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他总结前言 一、题目607. 销售员
表: SalesPerson
--------------------------
| Column Name | Type |
--------------------------
| sales_id | int |
| name | varchar |
| salary | int |
| commission_rate | int |
| hire_date | date |
--------------------------
sales_id 是该表的主键列。
该表的每一行都显示了销售人员的姓名和 ID 以及他们的工资、佣金率和雇佣日期。
表: Company
----------------------
| Column Name | Type |
----------------------
| com_id | int |
| name | varchar |
| city | varchar |
----------------------
com_id 是该表的主键列。
该表的每一行都表示公司的名称和 ID 以及公司所在的城市。
表: Orders
-------------------
| Column Name | Type |
-------------------
| order_id | int |
| order_date | date |
| com_id | int |
| sales_id | int |
| amount | int |
-------------------
order_id 是该表的主键列。
com_id 是 Company 表中 com_id 的外键。
sales_id 是来自销售员表 sales_id 的外键。
该表的每一行包含一个订单的信息。这包括公司的 ID 、销售人员的 ID 、订单日期和支付的金额。
编写一个SQL查询报告没有任何与名为 “RED” 的公司相关的订单的所有销售人员的姓名。
以 任意顺序 返回结果表。
查询结果格式如下所示。
输入
SalesPerson 表:
-----------------------------------------------------
| sales_id | name | salary | commission_rate | hire_date |
-----------------------------------------------------
| 1 | John | 100000 | 6 | 4/1/2006 |
| 2 | Amy | 12000 | 5 | 5/1/2010 |
| 3 | Mark | 65000 | 12 | 12/25/2008 |
| 4 | Pam | 25000 | 25 | 1/1/2005 |
| 5 | Alex | 5000 | 10 | 2/3/2007 |
-----------------------------------------------------
Company 表:
--------------------------
| com_id | name | city |
--------------------------
| 1 | RED | Boston |
| 2 | ORANGE | New York |
| 3 | YELLOW | Boston |
| 4 | GREEN | Austin |
--------------------------
Orders 表:
------------------------------------------------
| order_id | order_date | com_id | sales_id | amount |
------------------------------------------------
| 1 | 1/1/2014 | 3 | 4 | 10000 |
| 2 | 2/1/2014 | 4 | 5 | 5000 |
| 3 | 3/1/2014 | 1 | 1 | 50000 |
| 4 | 4/1/2014 | 1 | 4 | 25000 |
------------------------------------------------
输出
------
| name |
------
| Amy |
| Mark |
| Alex |
------
解释 根据表 orders 中的订单 ‘3’ 和 ‘4’ 容易看出只有 ‘John’ 和 ‘Pam’ 两个销售员曾经向公司 ‘RED’ 销售过。 所以我们需要输出表 salesperson 中所有其他人的名字。
二、解题
1.正确示范①
提交SQL
select name from SalesPerson
where sales_id not in(select sales_id from Orders where com_id in(select com_id from Company where nameRED)
);运行结果 2.正确示范②
提交SQL
select name from SalesPerson u1
left join (select sales_id from Orders u1join Company u2 on u1.com_idu2.com_id where u2.nameRED
) u2
on u1.sales_idu2.sales_id
where u2.sales_id is null;运行结果 3.正确示范③
提交SQL
select name from SalesPerson u1
where not exists(select 1 from Orders u2where com_id in(select com_id from Company where nameRED)and u1.sales_idu2.sales_id
);
运行结果 4.正确示范④
提交SQL
select u1.name from SalesPerson u1
left join Orders u2
on u1.sales_idu2.sales_id
left join Company u3
on u2.com_idu3.com_id
group by u1.name
having sum(if(u3.name RED, 1, 0))0;运行结果 5.其他 总结 正确示范①思路 先把向公司RED销售过商品的销售员id找到再通过not in把这部分销售员排除掉 正确示范②思路 先把向公司RED销售过商品的销售员id找到通过left join关联这部分数据u2限定u2.sales_id is null 正确示范③思路 通过not exists方式把向公司RED销售过商品的销售员记录排出掉 正确示范④思路 以销售人员表作为主表关联订单表公司表按销售人员分组group by u1.name 筛选出向公司RED销售过商品的销售员记录是0的having sum(if(u3.name ‘RED’, 1, 0))0。