Skip to content

SQL Avg() 函数

AVG() 函数是一个聚合函数(aggregate function),用于计算数值列的平均值。

AVG() 函数在计算时会忽略指定列中的 NULL 值。

SELECT AVG(column_name) FROM table_name WHERE condition;

WHERE 子句(clause)是可选的。如果省略,AVG() 会计算该指定列在表中所有行的平均值。

在本教程中,我们将使用 Northwind 示例数据库,特别是其中的 “Products” 表。

“Products” 表的部分数据示例如下:

ProductID ProductName SupplierID CategoryID Unit Price

1 Chais 1 1 10 boxes x 20 bags 18.00

2 Chang 1 1 24 - 12 oz bottles 19.00

3 Aniseed Syrup 1 2 12 - 550 ml bottles 10.00

4 Chef Anton’s Cajun Seasoning 2 2 48 - 6 oz jars 22.00

5 Chef Anton’s Gumbo Mix 2 2 36 boxes 21.35

注意:为清晰起见,本示例中的价格已简化。

  1. 计算所有产品的平均价格:

以下 SQL 语句计算 “Products” 表中 “Price” 列的平均值。

SELECT AVG(Price) AS AverageProductPrice
FROM Products;

此查询将返回一行数据,其中包含一列名为 AverageProductPrice,显示计算出的平均值。

  1. 计算特定类别产品(例如 CategoryID = 1)的平均价格:
SELECT AVG(Price) AS AverageCondimentPrice
FROM Products
WHERE CategoryID = 1;
  1. 在子查询(Subquery)中使用 AVG():

以下 SQL 语句查询所有价格高于所有产品平均价格的产品。

SELECT ProductName, Price
FROM Products
WHERE Price > (SELECT AVG(Price) FROM Products);

在此示例中,子查询 (SELECT AVG(Price) FROM Products) 首先执行,以确定平均价格。然后,外层查询选择价格高于此平均值的产品。

实际应用:

AVG() 函数广泛应用于报表和数据分析,用于查找平均值,例如平均销售额、平均分数、平均响应时间等。它经常与 GROUP BY 子句一起使用,用于计算数据中不同分组的平均值(例如,按产品类别计算平均价格)。