where 和 having 的区别

来源:互联网 发布:长沙seo团队 编辑:程序博客网 时间:2024/06/01 08:09
  1. where 和 group by 都是条件,条件都不能用别名

    查询出平均工资高于2000的部门SELECT e.deptno,AVG(e.sal) FROM emp e GROUP BY e.deptno HAVING AVG(e.sal) >2000; 查询出每个部门工资高于1000的员工的平均工资SELECT e.deptno,AVG(e.sal) asal FROM emp e WHERE e.sal >1000 GROUP BY e.deptno;查询出每个部门工资高于1000且平均工资高于2000的部门和员工SELECT e.deptno,AVG(e.sal) FROM emp e WHERE e.sal>1000 GROUP BY e.deptno HAVING  AVG(e.sal) >2000;
  2. select 后面出现的原始列必须在 group by后面出现,group by 后面出现的原始列可以不在 select 后面出现

    每个部门的平均工资SELECT e.deptno,AVG(e.sal) FROM emp e GROUP BY e.deptno,e.sal;
  3. where 是过滤分组前的数据,必须放在 group by 之前;having 是过滤分组后的数据,必须放在group by 之后

    查询出每个部门工资高于1000且平均工资高于2000的部门和员工(错误写法)SELECT e.deptno,AVG(e.sal) FROM emp e WHERE AVG(e.sal)>1000 GROUP BY e.deptno HAVING  AVG(e.sal) >2000;
原创粉丝点击