9.7.1场景
统计各部门的人数情况
按照性别统计人数
按照班级统计参加比赛的人数
#(1)统计各个部门的人数
部门的ID 人数
10 6
20 3
30 4
select
deptno,count(*)
from
emp
group by
deptno;
#(2)统计各个部门的平均工资
部门的ID 平均工资
10 600
20 300
30 400
select deptno ,AVG(sal)from emp group by deptno;
(1)分组之后的结果:和具体一条数据没有关系
(2)分组会和聚合函数一起使用
(3)需求中包含“每”,“各”这种,group by
#统计各个部门各个岗位的人数
部门的ID 岗位 人数
1 Java开发 10
2 前端开发 6
3 出纳 2
4 会计 4
select
deptno,job,count(*)
from
emp
group by
deptno,job;
9.7.3having
##having
需求:统计平均工资超过2000的部门
(1)算出各个部门的平均工资
(2)过滤 只留下超过2000的
select
deptno,avg(sal) as sal_avg
from
emp
group by
deptno
having
sal_avg >2000;
9.7.4where与having区别
Where:过滤;分组之前的过滤 是对数据源进行过滤
Having:过滤;分组之后的过滤
#需求:统计部门30中 平均工资超过1000的岗位
条件:部门30 工资超过1000
select job,avg(sal) as sal_avg
from emp
where deptno = 30
group by
job
having
sal_avg >1000;