问答详情
源自:4-10 [Oracle] 主查询和子查询的执行顺序

这道题为什么不用group by

这道题为什么不用group by

提问者:慕粉7211035 2017-05-25 09:01

个回答

  • 慕斯卡6169147
    2020-11-30 14:47:22

    select a.empno       
           ,a.ename
           ,a.sal	  
           ,a.deptno	 
           ,b.avgsal  
      from emp a 
     inner join (
                 select 
                        deptno
                        ,avg(sal) as avgsal	
                   from emp b
                  group by deptno	
                ) b    
        on b.deptno =a.deptno 
     where a.sal > b.avgsal

    未执行过。自行尝试。

  • calm张星
    2017-10-11 16:14:53

    因为select后只有avg()这样一列,group by 后必须出现的是除了分组函数外的列,此题并没有其他的列所以可以写可以不写

  • 犁不动田的大牛
    2017-05-28 15:45:58

    select empno,ename,sal,(select avg(sal) 

                          from emp group by deptno 

                          having deptno=e.deptno) from emp e where sal>(select avg(sal) 

                                                                        from emp group by deptno 

                                                                        having deptno=e.deptno)

    这样也可以查询出来 但是我感觉这个代码太冗杂了 还是视频里的简单一点