SQL AVG函数

时间:2018-11-15 17:52:41  来源:igfitidea点击:

在本教程中,我们将学习如何使用SQL 聚合函数AVG来计算一组数字的平均值。

SQL AVG函数介绍

AVG函数计算值的平均值。

AVG函数的语法是:

AVG (ALL | DISTINCT expression)

可以在表达式之前指定ALL或DISTINCT修饰符。

  • ALL修饰符表示AVG函数应用于所有值,包括重复值。如果未显式指定任何修饰符,则默认情况下AVG函数使用ALL修饰符。
  • DISTINCT修饰符意思是AVG函数只应用于值集中的不重复的值。
    请注意,AVG函数将会忽略掉NUL值。

AVG函数将返回一个值,其数据类型由表达式结果的类型决定。返回的数据类型可以是任何数字类型,如integer、float等。

AVG函数是ANSI SQL聚合函数之一,因此,它适用于所有关系数据库管理系统,如Oracle、Microsoft SQL Server、MySQL、PostgreSQL等。

SQL AVG函数示例

简单的SQL AVG函数示例

下面的查询语句计算products表中所有产品的平均单价。

SELECT 
    AVG(unitprice)
FROM
    products;

要计算产品不同单价的平均值,可以在AVG()函数中使用distinct修饰符:

SELECT 
    AVG(DISTINCT unitprice)
FROM
    products;

带GROUP BY子句的SQL AVG函数

要查找每个产品类别的平均单价,可以将AVG函数与GROUP BY子句一起使用:

SELECT 
    categoryname, AVG(unitprice)
FROM
    products
INNER JOIN
    categories ON categories.categoryid = products.categoryid
GROUP BY categoryname;

其中 INNER JOIN子句用于从categories表中获取类别名称。

带HAVING子句的SQL AVG函数

若要获取平均单价大于25美元的类别,可以将AVG函数与GROUP BY和HAVING子句一起使用:

SELECT 
    categoryname, AVG(unitprice)
FROM
    products
INNER JOIN
    categories ON categories.categoryid = products.categoryid
GROUP BY categoryname
HAVING AVG(unitprice) > 25;