开发者社区> 问答> 正文

SQL语句查询异常 不是单组分组函数

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 分组了。 求大侠详解。。。

展开
收起
津崎平匡 2021-10-13 19:08:17 3455 0
1 条回答
写回答
取消 提交回答
  • 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;

    2021-10-16 13:23:17
    赞同 1 展开评论 打赏
问答分类:
SQL
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载