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

掌握聚合函数: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.lryc.cn/news/2386413.html

相关文章:

  • 【Node.js】高级主题
  • 【Linux】定时任务 Crontab 与时间同步服务器
  • 【TCP/IP协议族详解】
  • 蓝桥杯电子赛_零基础利用按键实现不同数字的显现
  • Docker架构详解
  • Rust 学习笔记:关于生命周期的练习题
  • Spring AI 模块架构与功能解析
  • 单元测试学习笔记
  • 多模态大语言模型arxiv论文略读(九十)
  • (1-6-1)Java 集合
  • spring5-配外部文件-spEL-工厂bean-FactoryBean-注解配bean
  • [安全清单] Linux 服务器安全基线:一份可以照着做的加固 Checklist
  • 企业级单元测试流程
  • 安卓开发用到的设计模式(2)结构型模式
  • JavaWeb:SpringBoot配置优先级详解
  • 故障率预测:基于LSTM的GPU集群硬件健康监测系统(附Prometheus监控模板)
  • 【b站计算机拓荒者】【2025】微信小程序开发教程 - chapter3 项目实践 -1 项目功能描述
  • FFmpeg 安装包全攻略:gpl、lgpl、shared、master 区别详解
  • AI浪潮下,媒体内容运营的五重变奏
  • WindTerm 以 SSH 协议的方式通过安恒明御堡垒机间接访问服务器
  • 通过现代数学语言重构《道德经》核心概念体系,形成一个兼具形式化与启发性的理论框架
  • 邂逅Node.js
  • 计算机视觉(图像算法工程师)学习路线
  • GITLIbCICD流水线搭建
  • 详细介绍Qwen3技术报告中提到的模型架构技术
  • 【慧游鲁博】【8】前后端用户信息管理:用户基本信息在小程序端的持久化与随时获取
  • 上位机知识篇---keil IDE操作
  • Odoo: Owl Hooks 深度解析技术指南
  • SpringBoot返回xml
  • 【案例篇】 实现简单SSM工程-后端