我正在为我的sql类做一个分配,我似乎无法弄明白。这是想要的选择的描述:
显示所有员工的薪水高于其部门同事的平均水平,仅适用于至少有4名员工的部门。
我已经能够找到像
这样的部分查询select ename
from emp
where sal > any (select avg(sal)
from emp
group by
deptno);
获取收入高于平均值的员工姓名。
或
select count(deptno)
from emp
group by
deptno having count(deptno) > 4;
获得每个部门的员工人数。
但不知何故,它无法将它们连接在一起。也许有人可以帮我透露一下。
答案 0 :(得分:0)
您可以将有条款与分组依据
结合使用select ename
from emp
where sal > any (select avg(sal)
from emp
group by
deptno)
having count(*)>4;
答案 1 :(得分:0)
只需将第二个查询放入AND子句:
select ename
from emp
where sal > any (select avg(sal)
from emp
group by
deptno)
and deptno in (select deptno
from emp
group by
deptno having count(deptno) > 4);
答案 2 :(得分:0)
select ename
from (
select deptno, count(deptno)
from emp
group by deptno
having count(deptno) > 4) valid_depts join emp ON emp.deptno=valid_depts.deptno
where sal > any (select avg(sal)
from emp
group deptno);