关于ORACLE数据库
聚合函数参数的数据类型要求
问题是关于一道子查询的试题,如下:
原题:查找平均工资最高的部门
相关字段 :SAL薪资 DEPTNO:部门编号 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:单行子查询返回多个行
报错原因不太理解
因为SELECT AVG(SAL) FROM EMP GROUP BY DEPTNO的返回值是一个【一行三列】的查询结果集,单跑是可以跑出来的
但是再嵌套入MAX()作为参数,就会报错。
个人尝试过聚合函数可以嵌套:【MAX(AVG(SAL)) +GROUP BY DEPTNO】是可以实现的
但是希望尝试用子查询的值作为参数,就会报错。
所以想清楚AVG()的返回值和SELECT的返回值有什么区别