"找出满足如下条件的员工: 1.作为某个部门下属最多并且是工资最高的员工 (若有多个员工下属一样多,取工资最高的员工,也就是部门老大还是得是工资最高的) (排除0下属的员工) 查询的结果应该包括以下属性: 1.员工的编号 2.员工的firstname 3.员工的lastname 4.员工部门ID 5.员工直接领导与间接领导的员工的平均工资。(即, A是B的直接领导,B是C的直接领导,则A领导的员工包含B 和C,可以依次- -直类推下去,比如steven king是所有的领导,中间可能隔了很多层次。) 排序要求: 首先按照其领导的员工中工资的平均值(也就是属性第5条),降序;其次员工编号,升序;"
时间: 2024-03-26 13:40:08 浏览: 53
好的,这是一个关于员工和部门的查询问题。可以使用SQL语句来实现。
以下是一种可能的解决方案:
```sql
SELECT e.employee_id, e.first_name, e.last_name, e.department_id, AVG(s.salary) AS avg_salary
FROM employees e
JOIN (SELECT department_id, MAX(employee_id) AS manager_id FROM employees WHERE manager_id IS NULL GROUP BY department_id) m
ON e.department_id = m.department_id
JOIN employees m2 ON m.manager_id = m2.employee_id
JOIN employees s ON (m2.employee_id = s.manager_id OR m2.employee_id = s.employee_id)
GROUP BY e.employee_id, e.first_name, e.last_name, e.department_id
HAVING COUNT(*) = (SELECT COUNT(*) FROM employees WHERE manager_id = m.manager_id)
ORDER BY avg_salary DESC, e.employee_id ASC;
```
解释一下以上的SQL语句:
1. 首先,我们需要找到每个部门的老大(即下属最多的员工)的ID。这里使用子查询来实现,即查询所有manager_id为NULL的员工,按照部门ID分组,取每个部门的employee_id最大值作为该部门的老大的ID。
2. 然后,我们需要找到每个老大的所有下属(包括直接下属和间接下属),以及这些下属的工资。这里使用JOIN操作来实现。首先,将employees表和上一步得到的老大ID表连接,找到每个老大的信息。然后,再次将employees表与自身连接,找到每个员工的直接领导的信息。最后,将employees表和salary表连接,找到每个员工的工资信息。
3. 接下来,我们需要计算每个员工的直接领导与间接领导的员工的平均工资,这里使用AVG函数来实现。注意,这里的平均工资是针对每个员工的直接领导与间接领导的员工的平均工资,而不是整个部门的平均工资。
4. 最后,我们需要过滤掉那些下属不满足条件的老大,即下属数量不是最多的员工,或者下属数量相同但工资不是最高的员工。这里使用HAVING语句来实现,具体条件是:员工的下属数量等于该部门老大的下属数量,且该员工的工资是该部门老大的下属中最高的。
5. 最后,按照题目要求的排序规则进行排序,即先按照平均工资降序排列,再按照员工编号升序排列。
希望这个解决方案能够帮到你!
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)