为什么使用嵌套之后,下面语句就会报不是单组分组函数

来源:2-9 [Oracle] 分组函数的嵌套

针尖上的天使_0002

2017-03-22 16:24

select DEPTNO, max(avg(sal)) from emp group by DEPTNO;

写回答 关注

1回答

  • 勇敢的小点点
    2017-03-22 21:51:25

    我是这样理解的:

    group by deptno 会把所有数据按部门分成三组,max(avg(sal)) 是把每一组的avg(sal)拿来相比较,得出一个最大值。所以,同时查询deptno和max(avg(sal))时,经过分组,前者返回的是三个值,后者返回一个值。这两个字段无法在同一行显示出来,所以报错。

    报错所指的不是单组分组函数就是在说deptno字段不是单组数据,要分三组显示。你可以试试改成 select max(deptno),... 应该就不会报错了。

    个人理解,仅供参考。

    prodav...

    这样查出来的deptno不是平均薪资最高的部门号,数据错误

    2019-09-14 16:13:20

    共 1 条回复 >

Oracle高级查询

数据库开发中应用广泛的高级查询,本教程通过大量的案例详细讲解

62861 学习 · 144 问题

查看课程

相似问题