📅  最后修改于: 2020-11-18 03:30:57             🧑  作者: Mango
MySQL avg()是一个聚合函数,用于返回各种记录中表达式的平均值。
以下是MySQL中avg()函数的基本语法:
SELECT AVG(aggregate_expression)
FROM tables
[WHERE conditions];
gregation_expression:它指定我们要查找平均结果的列或表达式。
table_name:它指定我们要从中检索记录的表。在FROM子句中必须至少列出一个表。
条件:它是可选的。它指定了选择记录必须满足的条件。
考虑我们的数据库有一个名为employees的表,具有以下数据。现在,我们将通过各种示例来了解此函数:
1.基本示例
执行以下查询,计算表中所有员工的平均工作时间:
mysql> SELECT AVG(working_hours) Avg_working_hours FROM employees;
输出:
我们将得到如下结果:
2.带有WHERE子句的MySQL AVG()函数
WHERE子句指定所选记录必须满足的条件。执行以下查询以计算Working_hours> = 12的员工的平均总工作时间。
mysql> SELECT AVG(working_hours) Avg_working_hours FROM employees WHERE working_hours>=12;
输出:
它将给出以下输出:
3.带有GROUP BY子句的MySQL AVG()函数
GROUP BY子句用于按一个或多个列返回每个组的结果。例如,以下语句使用AVG()函数计算每个员工的平均工作时间,然后将结果与GROUP BY子句分组:
mysql> SELECT emp_name, occupation, AVG(working_hours) Avg_working_hours FROM employees GROUP BY occupation;
输出:
在这里,我们可以看到每个员工的总工作时间是根据他们的职业进行分组计算的。
4.具有HAVING子句的MySQL AVG()函数
HAVING子句用于过滤MySQL中组的平均值。执行以下语句,计算所有雇员的平均工作时间,根据他们的职业将其分组,并返回其Avg_working_hours> 9的结果。
mysql> SELECT emp_name, occupation,
AVG(working_hours) Avg_working_hours
FROM employees
GROUP BY occupation
HAVING AVG(working_hours)>9;
输出:
5.带有DISTINCT子句的MySQL AVG()函数
MySQL使用DISTINCT关键字从列名中删除重复的行。此子句与此avg()函数一起使用,以返回表中存在的唯一记录数的平均值。
执行以下查询,删除employee表的working_hours列中的重复记录,然后返回平均值:
mysql> SELECT emp_name, occupation,
AVG(DISTINCT working_hours) Avg_working_hours
FROM employees
GROUP BY occupation;
输出: