AVG() 函数通过计算返回的行数和每一行数据的和,求得指定列数据的平均值。
在演示 AVG 函数用法之前,我们先 t_user 用户表,表数据如下:
mysql> select * from t_user; +----+------+-----+------+----------+ | id | name | sex | age | salary | +----+------+-----+------+----------+ | 1 | 张三 | 男 | 22 | 6782.50 | | 2 | 李四 | 男 | 27 | 7523.00 | | 3 | 王五 | 女 | 22 | 6760.30 | | 4 | 赵六 | 男 | 24 | 6810.50 | | 5 | 王二 | 男 | 27 | 10280.00 | | 6 | 杜一 | 女 | 25 | 8700.00 | | 7 | NULL | 女 | NULL | 9750.00 | +----+------+-----+------+----------+ 7 rows in set (0.06 sec)
(1)在 t_user 表中,查询所有用户薪水的平均值,如下:
mysql> select AVG(salary) as AVG_SALARY from t_user; +-------------+ | AVG_SALARY | +-------------+ | 8086.614286 | +-------------+ 1 row in set (0.04 sec)
注意:使用 AVG() 函数时,参数为要计算的列名称,若要得到多个列的平均值,则需要在每一列都使用 AVG() 函数。如下:
mysql> select AVG(age) as AVG_AGE, AVG(salary) as AVG_SALARY from t_user; +---------+-------------+ | AVG_AGE | AVG_SALARY | +---------+-------------+ | 24.5000 | 8086.614286 | +---------+-------------+ 1 row in set (0.03 sec)
上面使用 AVG 函数分别统计 age 和 salary 列的平均值。
(2)如果 AVG 函数统计的列存在 NULL 值,那么 NULL 值存在的行将被忽略。如下:
mysql> select SUM(AGE)/6 AS VAL1, AVG(AGE) AS VAL2 from t_user; +---------+---------+ | VAL1 | VAL2 | +---------+---------+ | 24.5000 | 24.5000 | +---------+---------+ 1 row in set (0.03 sec)
由运行结果得知,AVG 函数并没有将为 NULL 的行进行计算。