# Write your MySQL query statement below
1978. 上级经理已离职的公司员工
表: Employees
+-------------+----------+ | Column Name | Type | +-------------+----------+ | employee_id | int | | name | varchar | | manager_id | int | | salary | int | +-------------+----------+ employee_id 是这个表的主键。 这个表包含了员工,他们的薪水和上级经理的id。 有一些员工没有上级经理(其manager_id 是空值)。
写一个查询语句,查询出,这些员工的id,他们的薪水严格少于$30000
并且他们的上级经理已离职。当一个经理离开公司时,他们的信息需要从员工表中删除掉,但是表中的员工的manager_id
这一列还是设置的离职经理的id 。
返回的结果按照employee_id
从小到大排序。
查询结果如下所示:
示例:
输入: Employees table: +-------------+-----------+------------+--------+ | employee_id | name | manager_id | salary | +-------------+-----------+------------+--------+ | 3 | Mila | 9 | 60301 | | 12 | Antonella | null | 31000 | | 13 | Emery | null | 67084 | | 1 | Kalel | 11 | 21241 | | 9 | Mikaela | null | 50937 | | 11 | Joziah | 6 | 28485 | +-------------+-----------+------------+--------+ 输出: +-------------+ | employee_id | +-------------+ | 11 | +-------------+ 解释: 薪水少于30000美元的员工有1号(Kalel) and 11号 (Joziah)。 Kalel的上级经理是11号员工,他还在公司上班(他是Joziah)。 Joziah的上级经理是6号员工,他已经离职,因为员工表里面已经没有6号员工的信息了,它被删除了。
原站题解
pythondata 解法, 执行用时: 329 ms, 内存消耗: 66.3 MB, 提交时间: 2024-05-27 11:10:50
import pandas as pd def find_employees(employees: pd.DataFrame) -> pd.DataFrame: return employees.loc[(employees['salary']<30000) \ & (~employees['manager_id'].isnull()) \ & (~employees['manager_id'].isin(employees['employee_id'])), ['employee_id']] \ .sort_values(by='employee_id')
mysql 解法, 执行用时: 205 ms, 内存消耗: 0 B, 提交时间: 2023-04-02 11:23:49
# Write your MySQL query statement below select employee_id from Employees where salary < 30000 and manager_id not in (select distinct employee_id from Employees) order by employee_id