关于聚合函数内需要的数据类型的问题
ORACLE数据库的子查询部分的试题
问题:查询各部门平均工资中最高的部门
字段:DEPTNO部门编号 SAL薪资 EMP表名
原题正解是将子查询作为数据源
SELECT DEPTNO FROM EMP
GROUP BY DEPTNO
HAVING AVG(SAL) = (SELECT MAX(A) FROM (SELECT DEPTNO,AVG(SAL) A FROM EMP GROUP BY DEPTNO))
问题解:
将求最高平均薪资的部分按照如下方式来求
SELECT MAX((SELECT AVG(SAL) FROM EMP GROUP BY DEPTNO)) --子查询是一行三列的数据
FROM EMP;
--ERROR:单行子查询结果返回多行
个人想法:
做这个方式的原因是想练习子查询,本身通过MAX(AVG(SAL)) +GROUP BY 也可以求得最高平均薪资(聚合函数的嵌套),但是想尝试一下用子查询,发现居然会报错。
个人理解上认为SELECT的查询结果是一个一列多行的结果,AVG()+GROUP BY好像也是。
为什么就会出现如上错误(单行子查询结果返回多行)