SQL 分组查询如何使用 HAVING 条件?

HAVING用于分组后筛选,如SELECT region, SUM(amount) AS total_sales FROM sales GROUP BY region HAVING SUM(amount) > 10000。

sql 分组查询如何使用 having 条件?

在 SQL 分组查询中,HAVING 用于对分组后的结果进行筛选。与 WHERE 不同,WHERE 是在分组前过滤行,而 HAVING 是在分组后对聚合结果进行条件判断。

HAVING 的基本语法

使用 GROUP BY 进行分组时,如果需要根据聚合函数(如 COUNT、SUM、AVG 等)的值来过滤分组,就必须使用 HAVING:

SELECT 列名, 聚合函数(列) FROM 表名 WHERE 条件(可选) GROUP BY 列名 HAVING 聚合函数条件;

注意:HAVING 通常跟在 GROUP BY 后面,且可以引用聚合函数。

常见使用场景示例

假设有一张销售记录表 sales,包含字段:region(地区)和 amount(金额)。

需求:找出总销售额大于 10000 的地区

SQL 写法:

SELECT region, SUM(amount) AS total_sales FROM sales GROUP BY region HAVING SUM(amount) > 10000;

这条语句会先按地区分组,计算每组的销售总额,再筛选出总额超过 10000 的组。

蓝心千询 蓝心千询

蓝心千询是vivo推出的一个多功能AI智能助手

蓝心千询 34 查看详情 蓝心千询

另一个例子:统计订单数少于 5 笔的客户

SELECT customer_id, COUNT(*) AS order_count FROM orders GROUP BY customer_id HAVING COUNT(*)

HAVING 与 WHERE 的区别

理解两者的作用阶段很重要:

WHERE 在分组前过滤数据,不能使用聚合函数 HAVING 在分组后过滤分组结果,可以使用聚合函数

例如,若只想统计“华东”地区的客户订单数,并筛选订单少于 5 的客户:

SELECT customer_id, COUNT(*) AS order_count FROM orders WHERE region = ‘华东’ GROUP BY customer_id HAVING COUNT(*)

这里 WHERE 先过滤出“华东”的记录,再分组统计,最后用 HAVING 筛选低频客户。

基本上就这些。HAVING 是处理分组数据时的关键工具,尤其当你需要基于“合计”“平均”等指标做判断时,必须靠它完成。

以上就是SQL 分组查询如何使用 HAVING 条件?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/586631.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月10日 13:34:00
下一篇 2025年11月10日 13:43:57

相关推荐

发表回复

登录后才能评论
关注微信