Mysql 基础(八) 聚合函数

聚合与排序

学习重点

随着表中记录(数据行)的不断积累,存储数据逐渐增加,有时候我们可能希望计算出这些数据的合计值或者平均值等。本章我们将进行数据汇总操作.此外还能学习在汇总操作时指定条件,以及对汇总结果进行升序,降序的排序方法

对表进行聚合查询

学习重点

  • 使用聚合函数对表中的列进行计算合计值或者平均值等的汇总操作

  • 通常聚合函数会对 NULL 以外的对象进行汇总,但是只有 COUNT 函数例外,使用 COUNT(*)可以查出包含 NULL 在内的全部数据的行数

  • 使用 DISTINCT 关键字删除重复值

聚合函数

通过 SQL 对数据进行某种操作或计算时需要使用函数,比如计算表中全部数据的行数,可以使用 COUNT 函数.先记住 5 个常用的函数

  • COUNT: 计算表中的记录数(行数)

  • SUM:计算表中数值列中数据的合计值

  • AVG:计算表中数值列中数据的平均值

  • MAX:求出表中任意列中数据的最大值

  • MIN:求出表中任意列中数据的最小值

用于汇总的函数称为聚合函数或者聚集函数,所谓聚合就是将多行汇总为一行

计算表中数据的行数

COUNT(*) 统计全部数据 而 COUNT(列名)只统计非空数据

  • 基础代码

SELECT COUNT(*) FROM 表名;

COUNT() 中的星号 代表全部列,也可以换成别的,比如列名

  • 拿上个单元举例子

SELECT COUNT(*) AS '总数' FROM Product;

最后结果

总数
8

计算 NULL 之外的数据的行数

上个单元比如统计 purchase_price 中非空行


SELECT COUNT(purchase_price) AS '总数' FROM Product;

最后结果:因为有两行的数据是空行

总数
6

计算合计值

除了 COUNT 以外 其他的聚合函数都只能写列名,并且统计非 NULL 数据

SUM 函数

数字求和 ,要是里面有字符串则都是 0

  • 基础版本

SELECT SUM(列名) AS 'xxx' FROM 表名;
  • 上个单元求和

SELECT SUM(purchase_price) AS '总数' FROM Product;
  • 最后结果
总数
12210
  • 多列求和

SELECT SUM(purchase_price) AS '价格总数',SUM(sale_price) AS '总数' FROM Product;
  • 最后结果
价格总数 总数
12210 16780

计算平均值 AVG

它的语法与 SUM 完全相同,但是返回的数字是浮点型 有小数点,小数点有 4 位

  • 基础语法

SELECT AVG(列名) AS 'xxxx' FROM 表名;
  • 上个单元

SELECT AVG(purchase_price) AS '价格平均数' FROM Product;
  • 最后结果
价格平均数
2035.0000
  • 多列

SELECT AVG(purchase_price) AS '价格总数',AVG(sale_price) AS '总数' FROM Product;
  • 最后结果
价格总数 总数
2035.0000 2097.5000

计算最大值和最小值

要是想计算最大值和最小值可以用 Max 和 Min 函数, 这两个函数适用于任何数据类型

  • 基本用法

SELECT MAX(列名) AS 'xxxx' FROM 表名;

SELECT MIN(列名) AS 'xxxx' FROM 表名;
  • 上个单元

SELECT MAX(purchase_price) AS '最大值',MIN(sale_price) AS '最小值' FROM Product;
  • 最后结果
最大值 最小值
5000 100
  • 字符串

SELECT MAX(product_name) AS '最大值',MIN(product_id) AS '最小值' FROM Product;
  • 最后结果
最大值 最小值
高压锅 0001

使用聚合函数删除重复值(关键字 DISTINCT)

  • 删除基本数据

SELECT COUNT(DISTINCT product_type) FROM Product
  • 最后结果
COUNT(DISTINCT product_type)
3

这里特别注意 DISTINCT 必须写在括号中,因为必须要在计算行数之前删除 product_type 列中的重复数据.如果写在外面的话 会计算出数据的行数,再删除重复数据,结果就是 producr_type 列的所有行数


SELECT DISTINCT COUNT(product_type) FROM Product

结果

COUNT
8
  • 类似其他的聚合函数

SELECT SUM(DISTINCT purchase_price) AS '总数',SUM(DISTINCT sale_price ) AS '合值'FROM Product;
  • 最后结果
总数 合值
9410 16280

在聚合函数的参数中使用 DISTINCT,就可以删除重复数据


文章作者: 雾烟云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 雾烟云 !
  目录