当前位置: 首页 > ds >正文

SQL中的HAVING用法

HAVING 是 SQL 中专门对 “分组之后的聚合结果” 再做筛选的子句。
它一般跟在 GROUP BY 后面,不能单独使用,作用类似于分组版的 WHERE


✅ 1. 语法位置

SELECT1, 聚合函数(2) AS 别名
FROMGROUP  BY1
HAVING 聚合条件;   -- 这里写对聚合结果的过滤条件

✅ 2. 与 WHERE 的区别(面试高频)

子句过滤时机能用的表达式作用对象
WHERE分组前普通列、表达式原始行
HAVING分组后聚合函数、分组列聚合结果

✅ 3. 工作流程

  1. FROM 取表
  2. WHERE 先过滤原始行
  3. GROUP BY 分组
  4. 对每组算聚合值
  5. HAVING 再按聚合值筛组
  6. SELECT 输出最终列
  7. ORDER BY 排序(如有)

✅ 4. 示例表:orders

order_idcustomeramount
1Alice100
2Bob200
3Alice150
4Bob50
5Carol300

🔍 需求:找出 总消费 ≥ 250 的客户

SELECT customer,SUM(amount) AS total
FROM   orders
GROUP  BY customer
HAVING SUM(amount) >= 250;

结果:

customer | total
---------|-------
Alice    | 250
Carol    | 300
  • 先按 customer 分组,算每人总额
  • 再用 HAVING 筛掉 Bob(总额 250 以下)

✅ 5. 常见场景

  • 统计部门平均工资高于 1 万的部门
  • 找出销量超过 100 件的商品
  • 查询下单次数 ≥ 3 次的用户

✅ 6. 易错点

  • 非聚合列 放进 HAVING 会报错(除非该列同时出现在 GROUP BY 里)
  • 忘记先 GROUP BY → 语法错误
  • WHERE 写聚合条件 → 也报错

✅ 7. 一句话总结

HAVING 就是 “分组后再筛组” 的专用工具,和 GROUP BY 形影不离,专门处理聚合结果。

http://www.xdnf.cn/news/16954.html

相关文章:

  • ICML 2025 | 深度剖析时序 Transformer:为何有效,瓶颈何在?
  • ZYNQ与MPSoC实战:从Vitis入门到项目开发
  • Uniapp 验证 HTTPS 协议
  • JVM指针压缩的那些事
  • 永洪科技华西地区客户交流活动成功举办!以AI之力锚定增长确定性
  • 15day-人工智学习-机器学习-介绍和定义
  • vue+element 实现下拉框共享options
  • HFSS许可管理自动化工具
  • JAVA并发编程工具
  • [echarts] 更新数据
  • ForCenNet:文档图矫正迎来新SOTA(2025)
  • Wisdom SSH开启高效管理服务器的大门
  • ceph 14.2.22 nautilus Balancer 数据平衡
  • RK3588实现wlan直连
  • 一致连续性背后的直觉是什么?
  • 【通用视觉框架】基于QT+Halcon开发的流程拖拽式通用视觉框架软件,全套源码,开箱即用
  • windows mamba-ssm环境配置指南
  • 洛谷P4479第K大斜率
  • c#保留小数点后几位 和 保留有效数字
  • 【智能体agent】入门之--4.1 autogen agentic rag
  • C++继承中虚函数调用时机问题及解决方案
  • CG--逻辑判断1
  • 译 | BBC Studios团队:贝叶斯合成控制方法SCM的应用案例
  • C++ --- stack和queue的使用以及简单实现
  • 第三章 网络安全基础(一)
  • PendingIntent相关流程解析
  • 京东零售在智能供应链领域的前沿探索与技术实践
  • 逻辑回归召回率优化方案
  • 《协作画布的深层架构:React与TypeScript构建多人实时绘图应用的核心逻辑》
  • 插件升级:Chat/Builder 合并,支持自定义 Agent、MCP、Rules