SQL

SQL 知识量:22 - 44 - 129

9.1 聚集函数><

聚集函数简介- 9.1.1 -

在数据应用中经常会遇到需要汇总数据进行分析的需求,例如:统计表中的行数,计算某些行的和,找出列中的最大、最小值等等,这时可以使用SQL提供的聚集函数来满足这类需求。

SQL的5种常用聚集函数如下:

函数说明
avg()返回某列的平均值
count()返回某列的行数
max()返回某列的最大值
min()返回某列的最小值
sum()返回某列值之和

以上聚集函数在各主要的DBMS中得到了相当一致的支持,可以放心使用。

AVG()函数- 9.1.2 -

avg()函数用于对表中行数计数并计算其列值之和,最终求得该列的平均值。avg()可以用来返回所有列的平均值,也可以返回特定列或行的平均值。

例如:计算所有学生的平均年龄。

select avg(age) from student;

结果:

+----------+
| avg(age) |
+----------+
|  11.1000 |
+----------+

也可以计算特定行和列的平均值,例如:计算所有男生的平均年龄:

select avg(age) from student where sex='male';

结果:

+----------+
| avg(age) |
+----------+
|  11.1667 |
+----------+

需要注意的是:

  • avg()函数只能用于单个列,即只能确定特定列的平均值,其列名必须作为参数给出,如果要计算多个列的平均值,必须使用多个avg()函数。

  • avg()函数会忽略值为NULL的行。

COUNT()函数- 9.1.3 -

count()函数用于计数,具体有两种使用方式:

  • 使用count(*)对表中所有行的数目进行计数,不论列中的值是否是NULL,都计算在内。

  • 使用count(列名)对特定列的行的数目进行计数,如果列中的值是NULL,则忽略不计。

例如:有如下访客记录表(visitor)。

+----+-------+---------+
| id | name  | country |
+----+-------+---------+
|  1 | Bob   | USA     |
|  2 | Jame  | NULL    |
|  3 | Susan | UK      |
|  4 | Chen  | China   |
|  5 | Koco  | Japan   |
|  6 | Sophy | NULL    |
|  7 | Susan | UK      |
|  8 | Bob   | USA     |
+----+-------+---------+

1、查询所有访客记录数量(访问人次)。

select count(*) from visitor;

结果:

+----------+
| count(*) |
+----------+
|        8 |
+----------+

2、按国家查询访问人次。

select count(country) from visitor;

结果:

+----------------+
| count(country) |
+----------------+
|              6 |
+----------------+

如上所示,按照国家(country)查询排除了值为NULL的行。

MAX()函数- 9.1.4 -

max()函数用于返回列中的最大值。使用max()函数时,必须指定列名。

例如:查询学生的最大年龄。

select max(age) from student;

结果:

+----------+
| max(age) |
+----------+
|       13 |
+----------+

需要注意的是:

  • max()函数一般用于数值和日期值,但许多DBMS允许将max()函数用于文本数据,这时,max()函数将返回按该列排序后的最后一行。

  • max()函数忽略列值为NULL的行。

MIN()函数- 9.1.5 -

min()函数用于返回指定列的最小值。

例如:查询学生的最小年龄。

select min(age) from student;

结果:

+----------+
| min(age) |
+----------+
|       10 |
+----------+

需要注意的是:

  • min()函数一般用于数值和日期值,但许多DBMS允许将min()函数用于文本数据,这时,min()函数将返回按该列排序后的最前面一行。

  • min()函数忽略列值为NULL的行。

SUM()函数- 9.1.6 -

sum()函数用于返回指定列值的和,即总计结果。

例如:有一个考试成绩表(exam),现在查询一下所有学生科目得分的总计。

select sum(score) from exam;

结果:

+------------+
| sum(score) |
+------------+
|        820 |
+------------+

注意:sum()函数会忽略列值为NULL的行。