avatar

一条在知识海洋的咸鱼

这个家伙很懒,啥也没有留下😋

  • 首页
  • Linux
  • OCJP
  • Java核心技术卷
  • J2EE相关标准
  • 深入理解Java虚拟机
  • NIO与SOcket编程技术指南
  • Java多线程编程核心技术
  • Redis开发与运维
  • Spring Cloud Alibaba 微服务原理与实践
  • DevOps
  • Docker
  • MySQL必知必会
  • AI自学路线
  • Spring Boot 编程思想(核心篇)
主页 第十二章 汇总数据
文章

第十二章 汇总数据

发表于 2021-06-29 更新于 2026-06- 10
作者 Administrator
14~18 分钟 阅读

SQL的聚集函数及汇总表的数据

  • 聚集函数
    • AVG()函数
      • 注意
    • COUNT()函数
      • 注意
    • MAX()函数
      • 注意
    • MIN()函数
      • 注意
    • SUM()函数
      • 注意
  • 聚集不同值DISTINCT
    • 注意
  • 组合聚集函数
    • 取别名

聚集函数

汇总数据而不用把它们实际检索出来。有时候需要对表中的数据进行汇总,而不是想得到数据本身,如果返回数据本身则对时间、带宽和处理资源的浪费

  • 确定表中行数
  • 获得表中行组的和
  • 找出列表的最大值、最小值、平均值

MySQL给出了5个聚集函数,运行在组上,计算和返回单个值的函数

  • AVG() 返回某列的平均值
  • COUNT() 返回某列的行数
  • MAX() 返回某列的最大值
  • MIN() 返回某列的最小值
  • SUM() 返回某列之和
  • 标准偏差聚集函数(略)

AVG()函数

1.通过对表中行数计算并计算特定列值之和,求得该列的平均值

SELECT
	AVG( prod_price ) AS avg_price 
FROM
	products;

image.png
2.确定特定行或列的平均值

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

image.png

注意

  • 只适用于单个列
    AVG()只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出,如果要获得多饿列的平均值,必须使用多个AVG函数
  • 忽略NULL值
    AVG()函数忽略NULL值

COUNT()函数

COUNT()函数进行计数,可确定表中行的数目或符合特定条件的行的数目。

  • COUNT(*)不会忽略NULL值,就算该行所有值都为NULL
  • COUNT(column)对特定列中具有值的行进行计数,忽略NULL值

注意

  • COUNT()函数用*代替列名不忽略函数,但是如果指定列名则会忽略函数
SELECT
	COUNT(*) AS num_cust 
FROM
	customers;

不忽略NULL值,返回5
image.png

SELECT
	COUNT( cust_email ) AS num_cust 
FROM
	customers;

忽略NULL值,返回3
image.png

MAX()函数

返回列中最大值,必须指定列名

SELECT
	MAX( prod_price ) AS max_price 
FROM
	products;

image.png

注意

  • 对非数值数据使用MAX()
    在用于文本数据是,如果数据按相应的列排序,则MAX()返回最后一行
  • NULL值
    MAX()函数忽略值为NULL的行

MIN()函数

返回指定列的最小值,要求指定列名

SELECT
	MIN( prod_price ) AS min_price 
FROM
	products;

image.png

注意

  • 对非数值数据使用MIN()
    在用于文本数据是,如果数据按相应的列排序,则MAX()返回第一行
  • NULL值
    MIN()函数忽略值为NULL的行

SUM()函数

返回指定列值的和。
1.

SELECT
	SUM( quantity ) AS items_ordered 
FROM
	orderitems 
WHERE
	order_num = 20005;

检索订购物品的总数
image.png
2.合计计算值

SELECT
	SUM( item_price * quantity ) AS total_price 
FROM
	orderitems 
WHERE
	order_num = 20005;

返回订单价值的总和
image.png

注意

  • 所有的聚集函数都可以在多个列上计算
  • NULL值的行被SUM()函数忽略

聚集不同值DISTINCT

MySQL5之后的版本新增点

  • 所有的行执行计算,指定ALL参数或不给参数(因为ALL是默认行为)
  • 只包含不同的值,指定DISTINCT参数
SELECT
	AVG( DISTINCT prod_price ) AS avg_price 
FROM
	products 
WHERE
	vend_id = 1003;

image.png
此时的平均值要比不去重前高,是因为有多个价格低的产品被去重了
image.png

注意

  • 指定列名,DISTINCT必须使用列名,不能用于计算或表达式
  • MIN()和MAX(),虽然可以在其函数中使用DISTINCT,但是没有意义,因为如果存在多个最小值、最大值一样即使去重也没有任何影响,返回的结果都是相通的

组合聚集函数

SELECT语句可以包含多个聚集函数

SELECT
	COUNT(*) AS num_items,
	MIN( prod_price ) AS peice_min,
	MAX( prod_price ) AS price_max,
	AVG( prod_price ) AS price_avg 
FROM
	products;

image.png

取别名

包含多个聚集函数结果时,使用唯一的别名字段会使得SQL更易于理解和使用

MySQL必知必会
SQL
许可协议: 
分享

相关文章

7月 6, 2021

第二十九章 数据库维护

7月 6, 2021

第二十八章 安全管理

确保数据的安全和完整需要利用访问控制访问控制root账户不要使用root管理用户创建用户账号简单创建一个新用户账号使用GRANT或INSERT创建重命名用户账号删除用户账号设置访问权限访问控制用户需要对其数据具有适当的访问权,既不能过多,也不能过少,例如多数用户需要对表进行读写,少数用户需要创建和删

7月 6, 2021

第二十七章 全球化和本地化

MySQL处理不同字符集和语言的基础知识字符集和校对顺序校对的重要性使用字符集和校对顺序字符集和校对顺序数据库表被用来存储和检索数据。不同的语言和字符集需要以不同的方式存储和检索MySQL需要适应不同的字符集(字母和字符),应应不同的排序和检索数据的方法字符集:字母和符号的集合编码:某个字符集成员的

下一篇

第十三章 分组数据

上一篇

第十一章 使用数据处理函数

最近更新

  • 55 异常兜底:工具失败、非法输出、空检索与超时
  • 54 Agent Memory:短期记忆、用户上下文与摘要
  • 53 Human-in-the-loop:让关键动作暂停、确认与恢复
  • 52 工单 Tool:字段校验、创建结果与失败补偿
  • 51 订单 Tool:Mock、鉴权、状态解析与脱敏

热门标签

java基础 微服务 maven Spring Tomcat DDD Linux Linux基础 SQL基础 数据结构算法

目录

©2026 一条在知识海洋的咸鱼. 保留部分权利。

使用 Halo 主题 Chirpy