我在Oracle数据库19c中编写了一段代码,用于提取收入高于各自部门平均工资的员工的工资,但查询显示“缺少右括号”。有没有人能帮我解决这个问题,比如错误发生在哪里,错误是什么?
select ename
from emp
where sal > (select round(avg(sal)) as avg_sal, deptno
from emp
group by deptno
order by 2);发布于 2021-10-12 07:58:51
您可以使用这些查询来完成作业。
select ename
from emp e1
where sal > (select round(avg(sal)) as avg_sal
from emp e2
where e2.deptno = e1.deptno
);或
select e1.ename
from emp e1,
(
select round(avg(sal)) as avg_sal, deptno
from emp
group by deptno
) e2
where e1.deptno = e2.deptno
and e1.sal > avg_sal
;发布于 2021-10-12 07:57:49
现在,您的子查询的输出是2列和多行,这与您描述的业务逻辑相反。要获得所需的结果,您需要对查询进行一些修改:
GROUP BY和ORDER BY子句中的第二列。应如下所示:
SELECT ename FROM emp WHERE sal > (SELECT round(AVG(sal)) AS avg_sal FROM emp);现在,子查询只返回一个值,该值与主查询中的每个工资一起计算,并返回工资高于平均值的雇员的姓名。
https://stackoverflow.com/questions/69536662
复制相似问题