select min(avg_sal) from (select avg(sal) avg_sal, deptno from emp group by deptno); 我先对一组数据按照deptno分组,取平均值, 然后再去最小值。 这么写没有错。 但是我加上select min(avg_sal),deptno from (select avg(sal) avg_sal, deptno from emp group by deptno); 就报错了。 原因是出现在select 中字段没有出现在组函数,就必须出现在group by ,但是我这里有group by deptno啊。
有人让我改成select min(avg_sal),deptno from (select avg(sal) avg_sal, deptno from emp group by deptno) group by deptno ;
这些是没错,但是取不到最小值了,又按deptno 分组了。 求大侠详解。。。
1.select min(avg_sal) from (select avg(sal) avg_sal, deptno from emp group by deptno);肯定是对的,这是嵌套查询,相当于(select avg(sal) avg_sal, deptno from emp group by deptno)的结果是一个表,对这个表查询最小值查询,而最大,最小值的查询和平均值不同,不需要分组(group by)。 2.感觉你的需求是从emp表查到按deptno分组的最小平均值,及其对应的deptno,那么很遗憾,句子会比较啰嗦,如下: select a.deptno,b.min_sal from (select avg(sal) avg_sal, deptno from emp group by deptno) a, (select min(avg_sal) min_sal from (select avg(sal) avg_sal, deptno from emp group by deptno)) b where a.avg_sal = b.min_sal;
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。