当前位置: 首页 > 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.lryc.cn/news/603642.html

相关文章:

  • 智能制造的空间度量:机器视觉标定技术解析
  • 微店商品详情接口micro.item_get请求参数响应参数解析
  • 以太坊十年:智能合约与去中心化的崛起
  • Linux文件归档和备份
  • 自动调优 vLLM 服务器参数(实战指南)
  • IDEA中全局搜索快捷键Ctrl+Shift+F为何失灵?探寻原因与修复指南
  • ARM7微处理器的核心优势
  • 如何在Windows操作系统上通过conda 安装 MDAnalysis
  • 继续打卡day6
  • 机器学习线性回归:从基础到实践的入门指南
  • Wndows Docker Desktop-Unexpected WSL error错误
  • unity 使用PropertyDrawer 在Inspector 面板上自定义字段的显示方式
  • 天铭科技×蓝卓 | “1+2+N”打造AI驱动的汽车零部件行业智能工厂
  • RPG增容2.尝试使用MMC根据游戏难度自定义更改怪物的属性(二)
  • 本土化DevOps实践:Gitee为核心的协作工具链与高效落地指南
  • git中多仓库工作的常用命令
  • Mac安装Navicat步骤Navicat Premium for Mac v17.1.9【亲测】
  • 【腾讯云】EdgeOne网站安全防护的配置方法 防范盗刷流量 附恶意IP和UA黑名单
  • YOLOv11.pt 模型转换为 TFLite 和 NCNN 模型
  • npm : 无法加载文件 D:\Nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本
  • Kafka运维实战 17 - kafka 分区副本从 1 增加到 3【实战】
  • 图形界面应用程序技术栈大全
  • Java把word转HTML格式
  • python中的 @dataclass
  • It学习资源下载
  • LeetCode热题100——155. 最小栈
  • 【JVM】常见的 Java 垃圾回收算法以及常见的垃圾回收器介绍及选型
  • Docker网络技术深度研究与实战手册
  • DisplayPort 与 Display Port Alt模式两者区别解析
  • java导出pdf(使用html)