首先,where是针对单个语句的,而having是针对组的。 而且优先顺序是wheregroup byhaving。
需要注意的是:
1.where不能放在group by之后
2.having与group by连用,置于group by之后
3.where之后的非聚合函数,即SUM ()、AVG )等。 having很好。
聚合函数:
聚合函数是统计函数。 例如,求和、求平均值、求最大最小等。 group by可以对这些统计函数作用于一系列数据。 例如,如果我要求出各阶段的平均值,就需要在最各个阶段进行分类,求出平均值。 当然,where也能满足要求。
查询中,聚合语句(聚合函数)的优先级高于having,即首先分类为统计信息,聚合语句的优先级低于where,在应用单独的筛选器后再计算统计信息。 例如,在部门中筛选不到20个的部门,工资之和超过10000个。 (选择分区_ id,sum ) salary ) fromgroup
wheredepartment_id
havingsum(Salary ) 10000;