ORA-00937: 不是单组分组函数

   在实际操作过程中,有意或无意的会碰到这种问题。
   为了防止今后,在实际过程中,再次出现这样的问题,便有必要总结一番。
   笔者将造成这样问题的原因大致分为两类。
   第一类是聚合函数未嵌套情况下,符合分组条件,却并未使用group by语句或者错误使用group语句进行分组。
   如下:
     SQL> select deptno,max(sal) from emp;
     select deptno,max(sal) from emp
                *
     第 1 行出现错误:
    ORA-00937: 不是单组分组函数
    正确语句如下:
    SQL> select deptno,max(sal) from emp group by deptno;
         DEPTNO   MAX(SAL)
         ------ ----------
          30       2000
                      0
          20       2000
          10       2000
  
    第二类是聚合函数嵌套情况下(如max(avg(sal))),符合分组条件,却并未正确使用group by语句进行分组。
    如下例子所示:
    SQL> select deptno "部门编号" ,max(avg(sal)) "部门平均工资的最大值"  from emp group by  deptno;
    
    select max(avg(sal)) "部门平均工资的最大值",deptno "部门编号"
                                                                             *
    第 1 行出现错误:
    ORA-00937: 不是单组分组函数

    正确语句如下:
    select a.deptno "部门编号" ,max(a.new_avg) "部门平均工资的最大值" from (select avg(sal) as new_avg,deptno from
emp group by deptno) a group by a.deptno;
  部门编号 部门平均工资的最大值
---------- --------------------
    30                 2000
                          0
    20                 2000
    10                 2000
总之,实际工作中,大凡碰到这样的错误,大体上就是属于这两类了,至于其他的,暂时没碰到过,就不必在此赘述了。
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值