注意事项一:
如果没有groub by子句,则在select子句中只允许出现统计函数,其他任何字段都不允许出现。
错误范例:select deptno,count(empno) from emp; 这样会造成字段列,和统计列的长度不一至,这是不允许的。
正确范例:select count(empno) from emp;
注意事项二:
在统计查询中,select子句后只允许出现分组字段和统计函数,而其它非统计这段不允许出现。
错误范例:select deptno,ename,count(empno) from emp group by deptno;
这样会造成字段列,和统计列的长度不一至,这是不允许的。
正确范例:select deptno ,ename,count(empno) from emp group by deptno;
注意事项三:
统计函数允许嵌套使用,但是嵌套统计函数之后的select子句中不允许再出现任何的字段,包括分组字段
统计函数嵌套分析
通过上图所示的查询结果可以发现,这个结果返回的数据就像数据表一样,存在数据列、
数据行,所以在数据库中就可以将查询的结果称为临时表,
如果现在对这张临时表的sum(sal)字段要求出最大值,也就是相当于再单独使用一次max()
函数,按照分组的要求,如果没有出现group by子句,则查询中不能出现分组条件之外的内
容,所以这也就是为什么分组函数嵌套后,不允许出现其他查询字段的原因了。
分组的规律:
1.当需要使用分组函数而且又需要查询其他列(分组条件)时,一般都要进行分组统计。
例如:查询每个部门的编号、人数,这时很明显就不能单独使用一个count()函数解决问题了,
还需要查询deptno列的内容,那么就一定要使用分组。
2.一个列一存在重复值的时候就都可以使用分组进行操作,这个列可能是具体表的列,
也可能是返回的临时表的列。