首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理Oracle19c中的“缺右括号”?

如何处理Oracle19c中的“缺右括号”?
EN

Stack Overflow用户
提问于 2021-10-12 07:33:19
回答 2查看 49关注 0票数 0

我在Oracle数据库19c中编写了一段代码,用于提取收入高于各自部门平均工资的员工的工资,但查询显示“缺少右括号”。有没有人能帮我解决这个问题,比如错误发生在哪里,错误是什么?

代码语言:javascript
复制
select ename 
from emp 
where sal > (select round(avg(sal)) as avg_sal, deptno 
             from  emp 
             group by deptno 
             order by 2);
EN

回答 2

Stack Overflow用户

发布于 2021-10-12 07:58:51

您可以使用这些查询来完成作业。

代码语言:javascript
复制
select ename 
from emp e1 
where sal > (select round(avg(sal)) as avg_sal
             from  emp e2
             where e2.deptno = e1.deptno 
             );

代码语言:javascript
复制
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
;
票数 1
EN

Stack Overflow用户

发布于 2021-10-12 07:57:49

现在,您的子查询的输出是2列和多行,这与您描述的业务逻辑相反。要获得所需的结果,您需要对查询进行一些修改:

  • 从子查询中删除subquery;
  • remove GROUP BYORDER BY子句中的第二列。

应如下所示:

代码语言:javascript
复制
SELECT ename FROM emp WHERE sal > (SELECT round(AVG(sal)) AS avg_sal FROM emp);

现在,子查询只返回一个值,该值与主查询中的每个工资一起计算,并返回工资高于平均值的雇员的姓名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69536662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档