前提要述:参考书籍《MySQL必知必会》
10.3 汇总数据
我们经常需要汇总数据而不用把它们实际检索处出来,为此MySQL提供了专门的函数。使用这些函数,MySQL查询可用于检索数据,以便分析和报表的生成。这种类型的检索例子有以下几种:
- 确定表中的行数(或者满足某个条件或包含某个特定值的行数)。
- 获得表中行组的和。
- 找出表列(或所有行或某些特定的行)的最大值、最小值和平均值。
上述的例子都需要对表中数据(而不是实际数据本身)汇总。因此,返回实际表数据是对时间和处理资源的一种浪费(更不用说带宽了)。
MySQL提供了5个聚集函数。
聚集函数(aggregate function)运行在行组上,计算和返回单个值的函数。
函数 | 说明 |
---|---|
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行数 |
MAX() | 返回某列的最大值 |
MIN() | 返回某列的最小值 |
SUM() | 返回某列值之和 |
下面简单介绍这些函数
先创建下面的表:
CREATE TABLE student(
sid INT PRIMARY KEY,
sname VARCHAR(20),
ssex CAHR(1)
);
CREATE TABLE score(
sid INT PRIMARY KEY,
sname VARCHAR(20),
smath INT,
senglish INT
);
10.3.1 AVG()函数
AVG()通过对表中行数计数并计算特定列值之和,求得该列的平均值。AVG()可用来返回所有列的平均值,也可以用来返回特定列平均值。
AVG()只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出。为了获得多个列的平均值,必须使用多个AVG()函数。
AVG()函数忽略列值为NULL的行。
来使用AVG()函数来查询成绩表score中数学成绩的平均分(自己随便加上几个数):
SELECT AVG(smath) AS avg_smath FROM score;
AVG()也可用用来确定特定列平均值,配合WHERE子句。
10.3.2 COUNT()函数
COUNT()函数确定表中行的数目或符合特定条件的行的数目。
COUNT()函数有两种使用的方式:
- 使用COUNT(*)对表中行的数目进行计数,