当前位置: 首页 > 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;

相关文章:

  • 成功解决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课 图像处理之平滑(二)
  • 网站缓存优化怎么做/网站建设小程序开发
  • iis7.5 网站打不开/我想注册一个网站怎么注册
  • 网站建设任务书/百度seo排名培训 优化
  • 公司首页模板/网站如何seo推广
  • 做网站常用的插件/石家庄手机端seo
  • 七台河做网站/b2b平台排名