桐&露
2022-06-24 09:07
采纳率: 50%
浏览 18

聚合函数参数的数据类型要求

关于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的返回值有什么区别

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

相关推荐 更多相似问题