什么是分组

按照性别将班上同学分为男生一组,女生一组。

group by

/* 查看每个职位的最高、最低工资 */
select job,max(sale),min(sale) from emp group by job;

使用group by 语句

  • 出现在select列表中的字段,如果出现的位置不是分组函数,那么必须出现在group by子句中。

因为分组函数是sal,所以job不在分组函数中,必须出现在group by子句中
图片描述
如果不出现,均出错!!!
图片描述
图片描述

  • 正确做法:
/* 查看不同职位的人数和平均工资 */
select job,count(empno),avg(sal) from emp group by job;
  • 错误做法:
/* deptno和job都应该出现在group by后面 */
select deptno,job,count(empno),avg(sal) from emp group by job;

group by子句后面不能含有where子句!!!

having

对分组的结果,进行筛选

/* 查询平均工资大于2000的部门和其平均工资 */
select deptho avg(sal) from emp group by deptno having avg(sal)>2000;

图片描述

/* 显示每一年入职公司各多少人 */
select year(hiredate),count(empno) from emp group by year(hiredate);

图片描述


已注销
35 声望8 粉丝