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

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.lryc.cn/news/606830.html

相关文章:

  • MySQL--组从复制的详解及功能演练
  • 从O(n²)到O(n log n):深度剖析快速排序的内存优化与cache-friendly实现
  • 高级11-Java日志管理:使用Log4j与SLF4J
  • Oracle EBS 缺少adcfgclone.pl文件
  • 电商前端Nginx访问日志收集分析实战
  • 汇川ITS7100E触摸屏交互界面开发(一)调试事项说明
  • 25电赛e题杂乱环境稳定识别矩形框(附源码)
  • Vue3 Vue3中的响应式原理
  • StarRocks vs. Trino
  • 九联UNT403HS_海思MV320处理器_安卓9-优盘强刷刷机包
  • 嵌入式 Linux 深度解析:架构、原理与工程实践(增强版)
  • 企业级LLM智能引擎 的完整解决方案,整合了 SpringAI框架、RAG技术、模型控制平台(MCP)和实时搜索,提供从架构设计到代码实现的全面指南:
  • cloudflare worker + Cloudflare AI Gateway
  • 如何在不依赖 Office 的情况下转换 PDF 为可编辑文档
  • python中appium
  • K8S周期性备份etcd数据实战案例
  • 精通分类:解析Scikit-learn中的KNN、朴素贝叶斯与决策树(含随机森林)
  • 应用药品注册证识别技术,为医药行业的合规、高效与创新发展提供核心驱动力
  • 智能图书馆管理系统开发实战系列(四):后端C++ DLL开发与模块化设计
  • Dify版本升级实操
  • 体育直播系统搭建:核心数据详细接入指南
  • 网络编程-加密算法
  • CCleaner是否被过誉了?C盘满了怎么办?用ccleaner清除C盘垃圾,3款电脑系统磁盘清理和优化软件
  • 应用Builder模式在C++中进行复杂对象构建
  • Vue与Ajax快速入门
  • GXP6040K压力传感器可应用于医疗/汽车/家电
  • Python Flask框架Web应用开发完全教程
  • 【stm32】GPIO
  • 第3章 AB实验的统计学知识
  • 从Web2.0到Web3.0:社交参与方式的重塑与延伸