1.聚合函数
聚合函数实现数据的统计计算,用于计算表中的数据,返回单个计算结果。聚合函数包括COUNT、SUM、AVG、MAX、MIN等函数,下面分别介绍。
(1)COUNT函数
COUNT函数用于计算组中满足条件的行数或总行数。
语法格式:
COUNT ( { [ ALL | DISTINCT ] <表达式> } | * )
其中,ALL表示对所有值进行计算,ALL为默认值,DISTINCT指去掉重复值,COUNT函数用于计算时忽略NULL值。
【例6.12】求学生的总人数。
mysql> SELECT COUNT(*) AS 总人数
-> FROM student;
该语句采用COUNT(*)计算总行数,总人数与总行数一致。
查询结果:
+----------+
| 总人数 |
+----------+
| 6 |
+----------+
1 row in set (0.09 sec)
【例6.13】查询通信专业学生的总人数。
mysql> SELECT COUNT(*) AS 总人数
-> FROM student
-> WHERE speciality='通信';
该语句采用COUNT(*)计算总人数,并用WHERE子句指定的条件进行限定为201836。
查询结果:
+---------+
| 总人数 |
+---------+
| 3 |
+---------+
1 row in set (0.01 sec)
SUM和AVG函数
SUM函数用于求出一组数据的总和,AVG函数用于求出一组数据的平均值,这两个函数只能针对数值类型的数据。
语法格式:
SUM / AVG ( [ ALL | DISTINCT ] <表达式> )
其中,ALL表示对所有值进行计算,ALL为默认值,DISTINCT指去掉重复值,SUM / AVG函数用于计算时忽略NULL值。
MAX和MIN函数
MAX函数用于求出一组数据的最大值,MIN函数用于求出一组数据的最小值,这两个函数都可以适用于任意类型数据。
语法格式:
MAX / MIN ( [ ALL | DISTINCT ] <表达式> )
其中,ALL表示对所有值进行计算,ALL为默认值,DISTINCT指去掉重复值,MAX / MIN函数用于计算时忽略NULL值。
GROUP BY子句
GROUP BY子句用于指定需要分组的列。
语法格式:
GROUP BY [ ALL ] <分组表达式> [,…n]
其中,分组表达式通常包含字段名,ALL显示所有分组。
HAVING子句
HAVING子句用于对分组按指定条件进一步进行筛选,过滤出满足指定条件的分组。
语法格式:
[ HAVING <条件表达式> ]
其中,条件表达式为筛选条件,可以使用聚合函数。
当WHERE子句、GROUP BY子句、HAVING子句、ORDER BY子句在一个SELECT语句中时,执行顺序如下:
(1)执行WHERE子句,在表中选择行。
(2)执行GROUP BY子句,对选取行进行分组。
(3)执行聚合函数。
(4)执行HAVING子句,筛选满足条件的分组。
(5)执行ORDER BY子句,进行排序。
注意: HAVING子句要放在GROUP BY子句的后面,ORDERBY子句放在HAVING子句后面。