MENU

having [对分组后的信息进行过滤]

June 11, 2018 • Read: 3623 • SQL阅读设置

  • select deptno avg(sal) as "平均工资"
  • from emp
  • group by deptno
  • having avg(sal) > 2000
having 和 where 的区别展开目录
  • /*把姓名不包含A的所有员工按部门编号分组,
  • 统计输出部门平均工资大于2000的部门的部门编号,平均工资*/
  • select deptno,avg(sal)
  • from emp
  • where ename not like '%A%'
  • group by deptno
  • having avg(sal) > 2000

where 对原始记录过滤,having 对分组后的记录过滤,where 必须写在 having 的前面,顺序不能颠倒 *

注意展开目录
  1. having 子句是用来对分组之后的数据进行过滤,因此使用 having 前通常先使用 group by
  2. 如果没有使用 group by,但是用了 having,则意味着把所有的记录当作一组来过滤
  3. having 子句出现的字段必须是分组之后,组的整体信息,having 子句不允许出现组内详细信息
  4. where 和 having 条件中都不允许出现字段的别名
Last Modified: October 19, 2018
Archives Tip
QR Code for this page
Tipping QR Code