Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 基于子查询显示列_Sql_Oracle_Subquery - Fatal编程技术网

Sql 基于子查询显示列

Sql 基于子查询显示列,sql,oracle,subquery,Sql,Oracle,Subquery,我想显示工资总额最高的部门名称。 我使用的是oracle sql,表结构是Dept(Deptno,Dname,Loc)和Emp(Empno,Ename,Job,Salary,Deptno) 我使用的查询是 select Dname from Dept where Deptno= ( select Deptno from Emp where rownum=1 group by Deptno order by s

我想显示工资总额最高的部门名称。 我使用的是oracle sql,表结构是
Dept(Deptno,Dname,Loc)
Emp(Empno,Ename,Job,Salary,Deptno)

我使用的查询是

select Dname 
from Dept 
where Deptno=
      ( select Deptno 
        from Emp 
        where rownum=1 
        group by Deptno 
        order by sum(Salary) Desc
      );
这会产生一个错误:

缺少右括号

当我单独运行子查询时,它成功地返回一个
Deptno
。但是对于父查询,我得到了上面的错误

问题是什么?可能的解决方案是什么

select dname
  from (select dname, rank() over (order by sum(salary) desc) rnk
          from dept d 
               inner join emp e 
                       on e.deptno = d.deptno
        group by dname, e.deptno
       )
 where rnk = 1;
注意,在您的示例中,将rownum=1放入
是一个巨大的错误。这意味着选择一个随机行并对其进行排序(不是真正的最高工资行..只是任何旧行)

如果两个部门的最高工资相同,我的解决方案可能会超过一行。您可以使用
row\u number()
而不是
rank()
来选择一个