SQL Server AVG() 函数17 Mar 2025 | 4 分钟阅读 SQL Server 中的 AVG() 函数是聚合函数的一部分。 我们使用此函数来计算表达式的平均值。此函数会忽略 NULL 值。 但是,当结果集中没有任何行时,它会返回 NULL。 AVG() 是一个内置函数,通常与 SELECT 语句一起使用。此函数只接受一个参数,该参数可以是列或有效表达式,并返回单个结果以总结输入数据集。它也可以与 WHERE、GROUP BY、ORDER BY 和 HAVING 子句一起使用,以获取过滤后的结果。 语法以下语法说明了 SQL Server 中的 AVG() 函数 此函数包含以下参数 表达式: 它是必需的表达式,表示用于计算平均值的列名中的非空值。 表名: 这是我们想要从中检索记录的表的名称。 可以指定多个表。 WHERE 条件: 这是一个可选子句,用于定义必须满足才能选择记录的条件。 ALL|DISTINCT: 默认情况下使用 ALL,它指示函数对所有值进行计算。 相比之下,DISTINCT 告诉函数仅获取唯一值。 AVG() 函数示例让我们借助各种示例来了解 AVG() 函数在 SQL Server 中的工作原理。我们将使用 'employee_info' 表来实际演示 AVERAGE 函数,其中包含以下数据 ![]() AVERAGE 函数的基本示例此示例解释了在 SQL Server 中使用 AVERAGE 函数的基本用法。 它返回表达式的平均值,包括 null、非 null 和重复值。 假设我们想要计算表中所有员工的平均工作时长。 我们可以编写如下查询 执行此查询将返回以下输出,显示员工的平均工作时长 ![]() 带有 WHERE 子句的 AVERAGE 函数SQL Server 使用 WHERE 子句来过滤表中的记录。 此示例将使用带有 AVG() 函数的 WHERE 子句来获取职业为作家的员工的平均工作时长。 当我们执行该查询时,我们看到作家的平均工作时长为 11 小时 ![]() 带有 GROUP BY 子句的 AVERAGE 函数SQL Server 使用 GROUP BY 子句将具有相同值的行分组到汇总行中。我们使用此子句是因为它会生成汇总报告以制定进一步的策略。 以下查询将使用 AVG() 函数返回表中每个职业的员工总工作时长 执行该查询将返回与每个职业相关的员工的平均工作时长 ![]() 如果我们尝试在 SELECT 语句中组合聚合和非聚合列,我们将收到一个错误。这是错误消息 ![]() 带有 ORDER BY 子句的 AVERAGE 函数SQL Server 使用 ORDER BY 子句按升序或降序对表进行排序。 以下示例将使用带有 ORDER BY 子句的 AVG() 函数,计算与每个职业相关的员工的平均工作时长,然后按聚合平均值的降序对结果集进行排序 执行该语句将根据聚合平均值按降序显示结果 ![]() 带有 HAVING 子句的 AVERAGE 函数SQL Server 使用 HAVING 子句过滤分组后的行,并且此子句始终需要 GROUP BY 子句才能生成输出。 以下示例将使用带有 AVG() 函数的 HAVING 子句。它计算每个职业的员工的平均工作时长,然后检查聚合平均值是否大于 10。如果为真,则相应的结果以聚合平均值的升序返回 执行该语句将返回职业中平均工作时长大于 10 的员工 ![]() 带有 DISTINCT 子句的 AVERAGE 函数SQL Server 使用 DISTINCT 关键字从表中删除重复数据。假设我们想要计算 employee_info 表中每个职业的唯一员工的总工作时长。 我们可以编写如下查询来获取这些数据 执行该查询将返回以下结果,显示表中每个职业的唯一员工的工作时长 ![]() 结论本文将全面解释如何在 SQL Server 中使用 AVG() 函数以及何时使用。 此函数仅适用于数值数据类型。 在这里,我们讨论了基于 AVERAGE 函数的几个用例的各种示例,例如如何使用 WHERE、GROUP BY、ORDER BY 和 HAVING 子句获取表中员工的平均工作时长。 下一个主题SQL Server COUNT 函数 |
我们请求您订阅我们的新闻通讯以获取最新更新。