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

SQL 聚合函数总结:COUNT、SUM、AVG、MAX、MIN 详解

在实际开发和面试中,聚合函数(Aggregate Functions)是 SQL 的重点考察内容。它们可以帮助我们对数据进行统计、汇总和计算,比如求总数、平均值、最大值、最小值等。

本文将带你系统掌握 SQL 常见的聚合函数:COUNT、SUM、AVG、MAX、MIN,配合示例,快速理解和应用。

一、COUNT():统计数量

COUNT() 用于统计行数,常见用法有:

1. COUNT(*):统计总行数(包含 NULL)。

2. COUNT(column):统计某列中非 NULL 的值数量。

示例:

-- 查询 users 表的总用户数

SELECT COUNT(*) AS total_users FROM users;

-- 查询 email 不为空的用户数

SELECT COUNT(email) AS valid_emails FROM users;

应用场景:统计注册用户数、有效订单数。

二、SUM():求和

SUM() 用于计算数值列的总和,通常结合条件查询。

示例:

-- 统计所有订单的总金额

SELECT SUM(amount) AS total_amount FROM orders;

-- 统计已支付订单的总金额

SELECT SUM(amount) AS paid_amount FROM orders WHERE status = 'paid';

应用场景:财务统计、销售额汇总。

三、AVG():求平均值

AVG() 用于计算某列的平均值。

示例:

-- 查询所有订单的平均金额

SELECT AVG(amount) AS avg_amount FROM orders;

-- 查询某个用户的平均消费金额

SELECT AVG(amount) FROM orders WHERE user_id = 1;

应用场景:分析用户平均消费、计算某类商品的平均价格。

四、MAX():求最大值

MAX() 用于获取某列的最大值。

示例:

-- 查询最高订单金额

SELECT MAX(amount) AS max_order FROM orders;

-- 查询最晚的注册时间

SELECT MAX(created_at) AS last_register FROM users;

应用场景:找出最大值,如最高分、最新时间、最大金额。

五、MIN():求最小值

MIN() 用于获取某列的最小值。

示例:

-- 查询最小订单金额

SELECT MIN(amount) AS min_order FROM orders;

-- 查询最早的注册时间

SELECT MIN(created_at) AS first_register FROM users;

应用场景:找出最小值,如最低价、最早时间、最小库存。

六、聚合函数与 GROUP BY 联合使用

聚合函数常常配合 GROUP BY 使用,进行分组统计。

示例:

-- 按用户统计订单数量

SELECT user_id, COUNT(*) AS order_count

FROM orders

GROUP BY user_id;

-- 按商品分类统计销售总额

SELECT category, SUM(amount) AS total_sales

FROM products

GROUP BY category;

应用场景:报表统计、用户行为分析。

七、面试高频考点

1. COUNT(*) vs COUNT(column)

COUNT(*) 统计所有行。

COUNT(column) 只统计该列非 NULL 的值。

2. AVG() 遇到 NULL 怎么处理?

NULL 值不会参与计算。

3. 聚合函数能否和 WHERE 一起用?

可以,但 WHERE 过滤的是行数据;如果要过滤聚合结果,要用 HAVING。

示例:

-- 统计订单数量大于 5 的用户

SELECT user_id, COUNT(*) AS order_count

FROM orders

GROUP BY user_id

HAVING COUNT(*) > 5;

八、总结

COUNT():统计数量。

SUM():计算总和。

AVG():求平均值。

MAX():最大值。

MIN():最小值。

聚合函数配合 GROUP BY 使用,能完成强大的分组统计分析。掌握这些函数,不仅能应对日常开发需求,更能在面试中快速拿分。 🚀

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

相关文章:

  • 资深专业新媒体营销数字营销培训老师商学院教授课程老师培训讲师唐兴通讲授10大经典社群私域案例:Lululemon的热汗式信仰社群运营社群活动
  • 玉米病虫害数据集检测识别数据集:近4k图像,7类,yolo标注
  • Batch Size与预热导致深度学习模型推理时间忽快忽慢
  • 过滤器(Filter)与拦截器(Interceptor)知识点总结
  • 深度学习与机器学习
  • Linux服务器从零开始-mysql安装
  • Emacs 折腾日记(三十)——打造C++ IDE 续
  • 解密DNS:互联网的隐形导航系统
  • Mysql修改用户密码,修改MySQL密码如何安全的步骤是什么
  • PS练习2:将图片贴入实际环境中
  • cocos shader 流光环绕
  • kali nethunter 开启ssh
  • vue3滚动到顶部钩子函数+组件简单示例
  • Linux 开发工具(3)
  • Hive 运行
  • PPT中为图片添加透明渐变的蒙版
  • 数字签名过程中的消息摘要和加密的作用
  • Unity物理系统笔记
  • 区分同步(Synchronous)和异步(Asynchronous)
  • 隐语开源隐私计算SecretFlow,实测性能提升10倍,纵向联邦SecureBoost算法(已开源)
  • 云南食品安全管理员考试都考哪些知识点
  • AAAI2025 | 视觉语言模型 | 西电等提出少样本语言驱动多模态分类模型DiffCLIP
  • Coze(扣子)零基础开发02-建一个简单机器人
  • 混合架构(SpringCloud+Dubbo)的整合方案与适用场景(三)
  • SPI 通信协议
  • vue3学习日记(十六):路由配置详解
  • 河南省 ERA5 日值气象数据处理教程(2020–2025)
  • 继承和多态常见面试问题解析
  • 博士生如何进行文献阅读和文献整理?
  • 矩阵分析线性表示例题