1.首先我们需要了解下什么是聚合函数

​聚合函数aggregation function又称为组函数。 ​​​​认情况下 聚合函数会对当前所在表当做一个组进行统计。​

2.聚合函数的特点

​ 1.每个组函数接收一个参数(字段名或者表达式) ​​​​统计结果中默认忽略字段为NULL的记录​

​ 2.要想列值为NULL的行也参与组函数的计算,必须使用IFNULL函数对NULL值做转换。​

​ 3.​​​​不允许出现嵌套 比如​​​​sum(max(xx))​

3.聚合函数 count(),求数据表的行数


1

​select​​​​count​​​​(*/字段名) ​​​​from​​​​数据表​


MySQL之聚合数据(AVG,COUNT,MAX,MIN,SUM)_字段名

4.聚合函数 max(),求某列的最大数值


1

​select​​​​max​​​​(字段名)​​​​from​​​​数据表​



MySQL之聚合数据(AVG,COUNT,MAX,MIN,SUM)_最小值_02

5.聚合函数min(),求某列的最小值


1

​select​​​​main(字段名) ​​​​from​​​​数据表​



MySQL之聚合数据(AVG,COUNT,MAX,MIN,SUM)_聚合函数_03

6.聚合函数sum(),对数据表的某列进行求和操作


1

​select​​​​sum​​​​(字段名) ​​​​from​​​​数据表​



MySQL之聚合数据(AVG,COUNT,MAX,MIN,SUM)_字段名_04


7.聚合函数avg(),对数据表的某列进行求平均值操作


1

​select​​​​avg​​​​(字段名) ​​​​from​​​​数据表​



MySQL之聚合数据(AVG,COUNT,MAX,MIN,SUM)_嵌套_05

8.聚合函数和分组一起使用


1

​select​​​​count​​​​(*),group_concat(age) ​​​​from​​​​students ​​​​group​​​​by​​​​age;​



MySQL之聚合数据(AVG,COUNT,MAX,MIN,SUM)_嵌套_06

总结:

MySQL的聚合函数和我们日常office表使用的一些对表的操作的方法大致相同,在工作中主要配合分组使用



=====================================================





一、聚合函数(aggregation function)---也就是组函数

在一个行的集合(一组行)上进行操作,对每个组给一个结果。

常用的组函数:


​AVG([distinct] expr)​



求平均值



​COUNT({*|[distinct] } expr)​



统计行的数量



​MAX([distinct] expr)​



求最大值



​MIN([distinct] expr)​



求最小值



​SUM([distinct] expr)​



求累加和


①每个组函数接收一个参数

②默认情况下,组函数忽略列值为null的行,不参与计算

③有时,会使用关键字distinct剔除字段值重复的条数

注意:

1)当使用组函数的select语句中没有group by子句时,中间结果集中的所有行自动形成一组,然后计算组函数;

2)组函数不允许嵌套,例如:count(max(…));

3)组函数的参数可以是列或是函数表达式;

4)一个SELECT子句中可出现多个聚集函数。



table test

Field

Type

Null

Key

Default

Extra

id

int(11)

NO

PRI

NULL

auto_increment

name

char(50)

NO


NULL


age

int(11)

NO


NULL


school

char(50)

YES


NULL



(一)AVG()函数

AVG()通过对表中行数计数并计算特定列值之和,从而求得该列的平均值。

例如:SELECT AVG(age) AS avg_age FROM test;

此语句返回表test中所有age的平均值。

例如:SELECT AVG(age) AS avg_age FROM test WHERE name="john";

此语句返回表test中name=john的age的平均值。

注:AVG只能确定特定数值列的平均值,而且列名必须作为函数参数给出。为了获得多个列的平均值,必须使用多个avg函数。而且avg函数会忽略列值为NULL的行。


(二)COUNT()函数

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

COUNT()有两种使用方式:

1.使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值。

2.使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL值。

例如 SELECT COUNT(*) AS num_test FROM test;

此语句对表test所有行进行计数,返回表的总行数,不管行中各列有什么值。


例如 SELECT COUNT(school) FROM test;

此语句只对school列中有值的行进行计数,忽略null行。


(三)MAX()函数

MAX()函数返回指定列中的最大值。MAX()要求指定列名。

例如SELECT MAX(age) FROM test;

此语句返回表test中age的最大值。

注:MAX()函数忽略值为NULL的行。


(四)MIN()函数

MIN()函数返回指定列的最小值,MIN()要求指定列名。

例如 SELEC MIN(age) FROM test;

此语句返回最小的age值。

注:MIN()函数忽略列值为NULL的行。


(五)SUM()函数

SUM()函数来返回指定列值的和(总计)。

SELECT SUM(age)FROM test;

此语句返回age列所有值之和。

注:SUM函数忽略列值为NULL的行。SUM也可以用来合计计算值,SUM(price*count)。


(六)聚集不同值

对以上5个聚集函数都可以如下使用:

1.对所有行执行计算,指定ALL参数或者不给参数(ALL参数是默认的)

2.只包含不同的值,指定DISTINCT参数

例如SELECT AVG(DISTINCT age) FROM test;

此语句返回age值不同的所有age值的平均值。

注:DISTINCT只能用在列名前面,不能用在表达式前。