oracle中经常会遇到这两个错误,其实是一个原理。
如下sql语句:
select deptno,job,avg(sal) from emp;
数据库会报出:不是单组分组函数的错误,
指定了聚合函数,又同时制定了其他列,还想不按照指定的列来分组,你到底想让oracle怎么做呢?这根本就得不出结果。就像你需要统计班上男女生的人数,但是又不能分组,只能在一条数据里表示出来,怎么能办得到呢?
select deptno,job,avg(sal) from emp group by deptno;
会报出:不是group by表达式的错误
这样的sql语句,如果使用了聚合函数,同时使用了其他列的,那么没有用到聚合函数的那些列必须全部要用group by表达式。