1.先看表

2.现在需要查询各个部门的薪水总和。有个条件是,薪水小于等于150的员工不参与统计

直接上结果

select p.dept_id,sum(p.salary) sal from 
personal p where p.salary >150 GROUP BY p.dept_id

 结果:

3.上面的sql中是先从表中去掉salary小于等于150的数据,再使用dept_id分组求和。

所以 where条件是在group by之前执行

4.现在增加一个条件: 薪水之和大于400的部门。(条件还是小于等于150的员工不参与统计)

直接上答案

select p.dept_id,sum(p.salary) sal from 
personal p where p.salary >150 GROUP BY p.dept_id
HAVING sum(p.salary)>400

这样就把id为1的部门去掉了

显然having是在分组计算完成之后再按照条件 筛选,即在group by 之后执行

Logo

更多推荐