我想在员工数据库中找到拥有最多活跃员工的部门经理的职位,其结构为data structure
SELECT title ,dept_name
FROM titles
JOIN dept_manager as j ON titles.emp_no = j.emp_no
JOIN (SELECT y.dept_no,EmployeeCount FROM departments as y JOIN ( SELECT
count(*) as EmployeeCount, dept_no FROM dept_emp WHERE to_date = '9999-01-
01' GROUP BY dept_no ORDER BY EmployeeCount Desc Limit 1) AS n ON y.dept_no
= n.dept_no )
AS s ON j.dept_no = s.dept_no limit 1;
这必须是根据它找到它的查询,但它不起作用我会变得困惑,请帮助我
答案 0 :(得分:0)
首先,您需要每个部门的员工人数:
select de.dept_name, count(*)
from dept_emp de
where de.to_date = '9999-01-01'
group by de.dept_name;
然后,order by count(*) desc limit 1
获得员工最多的部门。注意:你没有指定如何处理关系,所以如果有关系,这只会得到一个拥有最多员工的任意部门。
您可以通过加入dept_manager
和titles
轻松扩展此功能。这就是我建议这样做的方式。
答案 1 :(得分:0)
SELECT title,dept_name
from departments as k
join (
SELECT title ,j.dept_no
FROM titles as a
JOIN dept_manager as j ON a.emp_no = j.emp_no
JOIN (SELECT count(*) as EmployeeCount, dept_no
FROM dept_emp WHERE to_date = '9999-01-01'
GROUP BY dept_no ORDER BY EmployeeCount Desc Limit 1 )
AS s ON j.dept_no = s.dept_no limit 1) as j on k.dept_no = j.dept_no;
这是按预期打印输出。