group子句的作用,可以使用group by子句将表中的数据分成若干组
举个栗子。
求表中各部门的平均工资,要求显示部门号,部门的平均工资
select deptno,avg(sal) from emp group by deptno;
我们可以把上述SQL抽象出一个模板
select a,b,c,组函数(x) from table group by a,b,c;
我们又可以得到一个结论啦!在select列表中所有未包含在组函数的列都应该包含在group by子句中。
继续举栗子
求每个部门的平均工资,要求显示部门的平均工资
select avg(sal) from emp gruop by deptno;
结论!结论!包含在group子句中的列不必包含在select列表中。
今年栗子大丰收啊,还要举栗子
按照部门不同的职位统计员工工资的总额(使用多个列分组)
select deptno,job,sum(sal) from emp group by deptno,job;
先按第一个列分组,如果第一个列相同。再按第2个列分组
栗子坏了--非法使用分组函数
select deptno,count(ename) from emp;