查找只管理预算大于100万美元的部门,但至少管理一个预算小于500万美元的部门的经理

qgelzfjb  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(175)

员工可以在多个部门工作;“工作关系”的“pct\U时间”字段显示给定员工在给定部门工作的时间百分比。
电磁脉冲(eid:integer, ename:string, age:integer, salary:real)作品(eid:integer, did:integer,百分比_time:integer)部门(did:integer, dname:string, budget:real, managerid:integer)
以下是我目前掌握的情况:

select ename 
from emp, dept
where emp.eid = dept.managerid
group by ename 
having ename = all(select ename
    from emp, dept
    where emp.eid = dept.managerid and budget > 1000000) and
        ename = any(select ename
        from emp, dept
        where emp.eid = dept.managerid and budget < 5000000)

有人能帮我解决这个问题吗?我好像一直在这里兜圈子。

7gyucuyw

7gyucuyw1#

首先排除管理预算低于100万的部门的所有人。一个简单的解决方案如下:

SELECT e.name
FROM employee e
JOIN dept d ON e.id = d.managerId
WHERE e.Id NOT IN ( SELECT managerId 
                  FROM dept
                  WHERE budget < 1000000)
AND d.budget < 5000000
GROUP BY e.name

下面是一个这样工作的例子:sqlfiddle
编辑:这里是第二个例子。我已将鲍勃提升为人力资源部主管,其预算超过500万美元。如您所见,查询仍然有效:sqlfiddle

相关问题