select deptno,sal from emp where emp.sal=
(select max(avg_sal) from (select avg(sal) avg_sal,deptno from emp group by deptno)); 这句语句为什么会显示未选定行
(select max(avg_sal) from (select avg(sal) avg_sal,deptno from emp group by deptno)); 这句语句为什么会显示未选定行
这样写就没错了
select deptno,sal from emp where emp.sal=
(select round(max(avg_sal),2) from (select avg(sal) avg_sal,deptno from emp group by deptno));desc emp
名称 空值 类型
-------- -------- ------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2) emp表中的sal小数点后有两位,比较可能有问题
--要先明白自已的意思
--分开你的来看,下面这个语句你想,取出来按部门求平均工资最大的
select max(avg_sal) from (select avg(sal) avg_sal,deptno from emp group by deptno);
--而你这句,是取emp中sal等于取出来的平均工资最大值的记录,但emp中没有任何一个人的工资是等于这个值的,因此是没有记录的
select deptno,sal from emp where emp.sal=取出来的平均工资最大值