聚集函数是运行在行组上,计算和返回单个值的函数。对表中数据而非实际数据本身进行汇总,如获取行数、获取某列最值等。
除上述函数外,MySQL还支持标准偏差聚集函数。
返回某列平均值:
SELECT AVG(columnName) AS avgVal
FROM tableName;
AVG函数只能用于数值列,且列名必须作为函数参数给出。为获取多个列的平均值,要使用多个AVG函数。
AVG函数忽略值为NULL的行。
COUNT函数两种用法:
1.COUNT(*)
:对表中行的数目进行计数,不管表列中包含的是NULL值还是非NULL值。
2.COUNT(columnName)
:对特定列中具有值的行进行计数,忽略NULL值。
返回列中的最大值:
SELECT MAX(columnName) AS maxVal
FROM tableName;
MAX函数必须指定列名,一般用来找出最大的数值或日期值,但也能获取文本列中的最大值,即该列按ORDER BY升序排序时的最后一列。
MAX函数忽略值为NULL的行。
MIN函数与MAX函数类似,它找出最小值。
获取某列值的和:
SELECT SUM(columnName) AS sumVal
FROM tableName;
也可以获取列进行算术运算后的结果值的和:
SELECT SUM(columnName1 * columnName2) AS sumVal
FROM tableName;
所有聚集函数都能用于多个列上的算术运算的结果值。
SUM函数忽略值为NULL的行。
以下聚集函数的DISTINCT的使用首次添加是在MySQL 5.0.3中。
以上五个聚集函数都能:
1.对所有行执行计算,指定ALL参数或不给参数(默认值)。
2.只对包含不同的值的行执行计算,指定DISTINCT参数。
SELECT AVG(DISTINCT columnName) AS avgVal
FROM tableName;
DISTINCT用于MAX和MIN函数时没有意义。
DISTINCT用于COUNT时,不能用于COUNT(*),必须使用列名:
SELECT COUNT(DISTINCT columnName)
FROM tableName;
错误使用:
SELECT COUNT(DISTINCT *)
FROM tableName;
可同时使用多个聚集函数:
SELECT COUNT(*) AS num, MIN(columnName) AS minVal
FROM tableName;