更新时间:2022-12-07 GMT+08:00
GROUP BY中使用HAVING过滤
功能描述
利用HAVING子句在表分组后实现过滤。
语法格式
1 2 3 |
SELECT attr_expr_list FROM table_reference GROUP BY groupby_expression[, groupby_expression… ] HAVING having_expression; |
关键字
groupby_expression:可以是单字段,多字段,也可以是聚合函数,字符串函数等。
注意事项
- 所要分组的表必须是已经存在的表,否则会出错。
- 如果过滤条件受GROUP BY的查询结果影响,则不能用WHERE子句进行过滤,而要用HAVING子句进行过滤。HAVING与GROUP BY合用,先通过GROUP BY进行分组,再在HAVING子句中进行过滤,HAVING子句中可支持算术运算,聚合函数等。
示例
先依据num对表transactions进行分组,再利用HAVING子句对查询结果进行过滤,price与amount乘积的最大值大于5000的记录将被筛选出来,返回对应的num及price与amount乘积的最大值。
1 2 3 4 |
SELECT num, max(price*amount) FROM transactions WHERE time > '2016-06-01' GROUP BY num HAVING max(price*amount)>5000; |
父主题: 分组SELECT