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

掌握聚合函数:COUNT,MAX,MIN,SUM,AVG,GROUP BY和HAVING子句的用法,Where和HAVING的区别

对于Java后端开发来说,必须要掌握常用的聚合函数:COUNT,MAX,MIN,SUM,AVG,掌握GROUP BY和HAVING子句的用法,掌握Where和HAVING的区别:

✅ 一、常用聚合函数(聚合函数用于统计汇总数据)

聚合函数作用示例
COUNT()统计记录条数SELECT COUNT(*) FROM 表名
MAX()求最大值SELECT MAX(价格) FROM 商品
MIN()求最小值SELECT MIN(价格) FROM 商品
SUM()求总和SELECT SUM(数量) FROM 订单
AVG()求平均值SELECT AVG(价格) FROM 商品

✅ 二、GROUP BY 子句(用于分组统计)

GROUP BY 将数据按照某个字段进行分组,并配合聚合函数使用。

示例:

SELECT 部门, AVG(薪资)
FROM 员工
GROUP BY 部门;

含义:按“部门”分组,统计每个部门的平均薪资。


✅ 三、HAVING 子句(对分组后的数据进行过滤)

  • WHERE 是在 分组前 对原始数据进行过滤。
  • HAVING 是在 分组后 对聚合结果进行过滤。

示例:

SELECT 部门, AVG(薪资) AS 平均薪资
FROM 员工
GROUP BY 部门
HAVING AVG(薪资) > 8000;

含义:先按部门分组,再筛选平均薪资大于8000的部门。


✅ 四、WHERE 和 HAVING 的区别总结:

对比项WHEREHAVING
作用阶段分组前(原始数据)分组后(聚合结果)
是否能用聚合函数❌不能✅可以
示例WHERE 薪资 > 5000HAVING AVG(薪资) > 8000

✅ 五、综合示例

假设我们有一个员工表 employees

idnamedepartmentsalary
1张三IT8000
2李四HR6000
3王五IT9000
4赵六HR5000
5孙七Sales7000

查询平均工资大于7000的部门及其平均工资:

SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 7000;

http://www.dtcms.com/a/211835.html

相关文章:

  • 成功解决ImportError: cannot import name ‘DTensor‘ from ‘torch.distributed.tensor‘
  • 题目 3327: 蓝桥杯2025年第十六届省赛真题-倒水
  • loss的范围
  • 读《Go语言圣经》记录(一)
  • uni-app学习笔记十三-vue3中slot插槽的使用
  • QML与C++交互2
  • 【电子通识】连接器的绝缘胶座和接触端子基础知识
  • 数据结构 栈的详细解析
  • Java——优先级队列(堆)
  • 明阳智慧能源社招校招入职测评 |iLogic言语逻辑数字、Talent5大五职业性格测评、TAS倍智人才测评考什么
  • JVM规范之栈帧
  • 我的第1个爬虫程序——豆瓣Top250爬虫的详细步骤指南
  • uni-app学习笔记十二-vue3中组件传值(对象传值)
  • 字节跳动GPU Scale-up互联技术白皮书
  • 【数据结构】实现方式、应用场景与优缺点的系统总结
  • 基于Android的军训app的设计与实现
  • Leetcode 刷题记录 10 —— 二叉树
  • OpenGL环境配置
  • c++ overwrite
  • OpenCV 第7课 图像处理之平滑(二)
  • springboot中拦截器配置使用
  • windows和mac安装虚拟机-详细教程
  • 新闻推荐预测系统实战指南
  • html学习
  • 前端流行框架Vue3教程:27. 依赖注入
  • 教师技术知识对人工智能赋能下教学效果的影响:以教学创新为中介的实证研究
  • UART、RS232、RS485基础知识
  • L1-110 这不是字符串题 - java
  • JWT令牌详解及Java中的使用实战
  • PP-OCRv5