开发者社区 问答 正文

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 3484 分享
分享
版权
举报
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 评论

    评论

    全部评论 (0)

    登录后可评论
问答分类:
SQL
问答地址:
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等