加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

oracle报错不是单组分组函数

(2016-08-16 13:38:01)
标签:

不是单组分组函数

报错

分类: oracle
解释是苍白,直接上例子!!!
SQL> select deptno,count(*) from emp;
select deptno,count(*) from emp
ORA-00937: 不是单组分组函数
首先,在使用聚合函数时,若要显示其他列,要加入group by 对某一列进行分组
结果如下:
SQL> select deptno,count(*) from emp group by deptno;
DEPTNO   COUNT(*)
------ ----------
    30          7
    20          5
    10          2
我还想继续分组,比如这样
SQL> select max(deptno),count(*) from emp group by deptno ;
MAX(DEPTNO)   COUNT(*)
----------- ----------
         30          7
         20          5
         10          2
这好像与上面一样啊,当然一样啦,因为进行了分组,每组的组号都是一样的,最大值肯定还是本身啦

我要找人数最多的部门号,那我们就这样:
SQL> select max(deptno) deptno,max(count(*)) max from emp group by deptno ;
    DEPTNO        MAX
---------- ----------
        30          7
那又有人说了,我不这样,我直接这样为什么不行
SQL> select deptno,max(count(*)) max from emp group by deptno ;
select deptno,max(count(*)) max from emp group by deptno
ORA-00937: 不是单组分组函数
就会报错说不是单组分组函数了因为

sql语言就面向集合的,如果求出来max(count(*)),那么deptno需要对应的是哪一条 

我们加入max(deptno) 选出一个来与其进行对应!

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有