前言
练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。
今日题目:
1978.上级经理已离职的公司员工
表:Employees
列名 | 类型 |
---|---|
employee_id | int |
name | varchar |
manager_id | int |
salary | int |
在 SQL 中,employee_id 是这个表的主键。这个表包含了员工,他们的薪水和上级经理的id。有一些员工没有上级经理(其 manager_id 是空值)。
查找这些员工的id,他们的薪水严格少于$30000 并且他们的上级经理已离职。当一个经理离开公司时,他们的信息需要从员工表中删除掉,但是表中的员工的manager_id 这一列还是设置的离职经理的id 。
返回的结果按照employee_id 从小到大排序。
我那不值一提的想法:
- 首先梳理表内容,题干一共给了一张员工表,记录了员工id,员工姓名以及经理id和薪水。
- 其次分析需求,
- 对于薪水小于30000可以利用条件
where salary < 30000
- 对于离职的经理,由于以及不在原表中了,所以我认为可以建立一个临时表保存所有的员工id,然后再用经理id not in 这个临时表里面。
- 最后在用order by 进行排序
select employee_id
from Employees
where salary < 30000
and manager_id not in
(select employee_idfrom Employees
)
order by employee_id
结果:
总结:
能运行就行。