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

汇总数据(使用聚集函数)

目录

聚集函数

为什么需要聚合函数?

AVG() 平均值函数

COUNT() 计数函数

MAX() 最大值函数

MIN() 最小值函数

SUM() 求和函数

聚集不同值(DISTINCT)


聚集函数

聚集函数用于将多行数据汇总为一个结果。常用于:
统计行数(如符合某条件的数量)
求某列的最大值、最小值、平均值或总和等
生成分析报告或汇总结果

为什么需要聚合函数?

在处理数据时,经常需要汇总信息,比如统计总数、求和、求平均值等,而不是获取原始数据本身。
例如:
老板问公司总共有多少员工?→ 需要统计行数(聚合函数 COUNT())
财务问这个月总销售额是多少?→ 需要求和(聚合函数 SUM())
HR问员工平均工资是多少?→ 需要求平均值(聚合函数 AVG())
这些场景下只需要汇总结果,不需要把所有原始数据(比如每个员工的工资明细)都查出来。

比如有一张 orders 表,记录了所有订单的金额:

order_idamount
1100
2200
3300

如果不用聚合函数:
就需要先查询所有订单的 amount,再在程序中手动累加求和,低效且麻烦。
如果用聚合函数:
直接写 SELECT SUM(amount) FROM orders,数据库会直接返回 600,一步到位。

SQL 提供了 5 个常用聚集函数:

函数说明
AVG()求平均值
COUNT()统计行数
MAX()返回最大值
MIN()返回最小值
SUM()求总和

AVG() 平均值函数

用法:SELECT AVG(column) FROM 表名;

可返回整列或某一条件下的平均值。

要求:统计所有商品的平均价格

SELECT AVG(prod_price) AS avg_price 
FROM products;

带条件过滤:

要求:查询供应商ID为 100 的产品的平均价格

SELECT AVG(prod_price) AS avg_price
FROM products
WHERE vend_id = 100;

AVG() 只能用于数值列

自动忽略 NULL 值

COUNT() 计数函数

用法:
COUNT(*):统计所有行数(包括 NULL)
COUNT(column):只统计非 NULL 值的行数

要求:统计 products 表中商品的总数量

SELECT COUNT(*) AS num_prod FROM products;

要求:统计 products 表中价格不为空的商品数量

SELECT COUNT(prod_price) AS num_prod FROM products;

MAX() 最大值函数

用法:SELECT MAX(column) FROM 表名;

要求:查询所有商品中的最高价格

SELECT MAX(prod_price) AS max_price FROM products;

忽略 NULL
可用于非数值类型(如日期、字符串)
使用于非数值时依赖排序规则

字符集是用于定义数据库中字符串数据的编码方式,决定了如何存储和表示文字。
排序规则是一种定义字符数据排序和比较规则的机制。

数据库使用 utf8mb4 字符集可以存储中文、英文、日文、韩文 以及 emoji 表情。
utf8mb4_unicode_ci 排序规则中,'a' 和 'A' 被视为相等(不区分大小写)
utf8mb4_bin 排序规则中,'a' 和 'A' 被视为不同,'a' 小于 'A'(区分大小写)

MIN() 最小值函数

与 MAX() 相反,返回最小值;

要求:查询所有商品中的最低价格

SELECT MIN(prod_price) AS min_price FROM products;

MIN() 也可用于非数值列并且会忽略 NULL 值

SUM() 求和函数

用法:SELECT SUM(column) FROM 表;

SELECT SUM(quantity) AS items_ordered
FROM orderItems
WHERE order_num = 001;
SELECT SUM(item_price*quantity) AS total_price
FROM orderItems
WHERE order_num = 001;

可用于表达式
忽略 NULL 值

聚集不同值(DISTINCT)

聚集函数默认是对所有值(包括重复)进行聚合
使用 DISTINCT 可只对不重复值聚合

SELECT AVG(DISTINCT prod_price) AS avg_price
FROM products
WHERE vend_id = 100;

DISTINCT 不能用于 COUNT(*),但可用于 COUNT(column)

COUNT(*) 统计的是行的数量,DISTINCT 作用于具体的列用于判断列值是否重复。如果写成 COUNT(DISTINCT *),无法确定基于哪些列去重

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

相关文章:

  • Element Plus
  • AI数据管家:智能体如何像“超级助手”管理企业数据?
  • 宇树 G1 部署(九)——遥操作控制脚本 teleop_hand_and_arm.py 分析与测试部署
  • 项目如何分阶段推进?几大要点分析
  • 【Linux】初识make/makefile
  • 【C++算法】80.BFS解决FloodFill算法_岛屿数量
  • 数据结构 排序(2)---选择排序
  • 【WRF工具】服务器中安装编译GrADS
  • 组件调用传值、调用函数
  • 信息技术发展与区块链的崛起:深度解析与未来展望
  • Vulkan入门教程 | 第二部分:创建实例
  • 0基礎網站開發技術教學(一) --(前端篇)--
  • LeetCode 11 - 盛最多水的容器
  • 力扣面试150(43/150)
  • 3D 网上展厅,到底是什么?​
  • Radash.js 现代化JavaScript实用工具库详解 – 轻量级Lodash替代方案
  • 如何在Windows操作系统上通过conda 安装 MDAnalysis
  • TDengine 中 TDgpt 异常检测的数据密度算法
  • Qt小技巧 QStandardPaths详解
  • 【机器学习深度学习】DeepSpeed框架:高效分布式训练的开源利器
  • 车载诊断架构 --- 关于诊断时间参数P4的浅析
  • 【Spring Boot 快速入门】三、分层解耦
  • XGBoost分类预测+特征贡献SHAP分析,通过特征贡献分析增强模型透明度,Matlab代码实现,引入SHAP方法打破黑箱限制,提供全局及局部双重解释视角
  • 机器学习 线性回归算法及案例实现
  • RESTful API开发指南:使用Spring Boot构建企业级接口
  • x86_64汇编
  • 微信小程序私密消息
  • 实习日志111
  • ElementUI表格 el-table实现自动循环滚动
  • Rust:高效错误处理工具 anyhow