目录
(1)语法:having 即 having <聚合条件参数>
(2)用法:对聚合函数的结果进行条件限制,弥补where语句不能与聚合函数使用的缺陷。
1.having函数的语法及用法实例
(1)语法:having <criteria> 即 having <聚合条件参数>
具体查询语句:select <字段> ,aggregate_function(字段) from 表名 (where 条件) group by 字段/别名 having 聚合条件 (order by 字段 asc|desc)
参数说明:
criteria:为聚合条件,是聚合函数+字段以及比较等条件组合,比如sum(math)>90。
说明:①加上括号的语句可以选择性加,若需要限制范围条件可以用where,而having是弥补where语句不能和聚合条件使用的缺陷。
②order by语句是排序语句,desc表示降序排序,asc 是升序排序,不填则默认为升序排序。
(2)用法:对聚合函数的结果进行条件限制,弥补where语句不能与聚合函数使用的缺陷。
(3)having函数的实例
①简单用法
例1:现有一个产品销量表goods_data,按产品编号ID分组获取每个产品的总收入,其中存储“收入”的字段为revenue。一个ID对应一个产品信息。获取总收入大于1000元的产品信息(产品ID、产品名name)以及总收入情况。
select ID,name,sum(revenue) as rev
from goods_data
group by ID,name
having sum(revenue)>1000
②与where、order by排序语法结合使用
例:现有一个产品销量表goods_data,按产品编号ID分组获取每个产品的总收入,其中存储“收入”的字段为revenue。一个ID对应一个产品信息。获取2022年4月份总收入大于1000元的每个产品信息(产品ID、产品名name)以及收入情况,并按收入降序。
select ID,name,sum(revenue) as rev
from goods_data
where date >= '2022-04-01' and date <= '2022-04-30'
group by ID,name
having sum(revenue)>1000
order by rev desc
2.having与where的区别
①两者都是条件语句。
②having语法用法是筛选成组后的各组数据,where语法是在聚合前先筛选记录。
③where不能与聚合函数结合使用,而having弥补where语句不能与聚合函数使用的缺陷,可以对聚合函数结合使用来限制聚合函数条件。