您现在的位置: > 技术沙龙 > 数据库 > SQL Server > Transact-SQL 参考 > AVG
  • 相关软件
    >AVG 创建者:webmaster 更新时间:2006-02-16 15:51

    返回组中值的平均值。空值将被忽略。



    语法


    AVG ( [ ALL | DISTINCT ] expression )



    参数


    ALL



    对所有的值进行聚合函数运算。ALL 是默认设置。



    DISTINCT



    指定 AVG 操作只使用每个值的唯一实例,而不管该值出现了多少次。



    expression



    精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。不允许使用聚合函数和子查询。



    返回类型


    返回类型由表达式的运算结果类型决定。





























    表达式结果返回类型
    整数分类int
    decimal 分类 (p, s)decimal(38, s) 除以 decimal(10, 0)
    money smallmoney 分类money
    floatreal 分类float



    重要  当使用 CUBE 或 ROLLUP 时,不支持非重复聚合,例如 AVG(DISTINCT column_name)、COUNT(DISTINCT column_name)、MAX(DISTINCT column_name)、MIN(DISTINCT column_name) 和 SUM(DISTINCT column_name)。如果使用了 CUBE 或 ROLLUP,Microsoft® SQL Server™ 将返回错误信息并取消查询。



    示例


    A. 使用 SUM 和 AVG 函数进行计算


    下例计算所有商业类书籍的平均预付款和本年度迄今为止的销售额。对检索到的所有行,每个聚合函数都生成一个单独的汇总值。



    USE pubs

    SELECT AVG(advance), SUM(ytd_sales)
    FROM titles
    WHERE type = 'business'


    下面是结果集:



    -------------------------- ----------- 
    6,281.25             30788    

    (1 row(s) affected)


    B. 与 GROUP BY 子句一起使用 SUM 和 AVG 函数


    当与 GROUP BY 子句一起使用时,每个聚合函数都为每一组生成一个值,而不是对整个表生成一个值。下例对每一类书生成汇总值,这些值包括每一类书的平均预付款以及每一类书本年度迄今为止的销售总额。



    USE pubs

    SELECT type, AVG(advance), SUM(ytd_sales)
    FROM titles
    GROUP BY type
    ORDER BY type


    下面是结果集:



    type                                                
    ------------ -------------------------- -----------
    business   6,281.25             30788    
    mod_cook   7,500.00             24278    
    popular_comp 7,500.00             12875    
    psychology   4,255.00             9939    
    trad_cook   6,333.33             19566    
    UNDECIDED   NULL               NULL    

    (6 row(s) affected)


    C. 使用带 DISTINCT 的 AVG


    下列语句返回商业类书籍的平均价格。



    USE pubs

    SELECT AVG(DISTINCT price)
    FROM titles
    WHERE type = 'business'


    下面是结果集:



    -------------------------- 
    11.64              

    (1 row(s) affected)


    D. 使用不带 DISTINCT 的 AVG


    如果不使用 DISTINCT,AVG 函数将计算出 titles 表中所有商业类书籍的平均价格。



    USE pubs

    SELECT AVG(price)
    FROM titles
    WHERE type = 'business'


    下面是结果集:



    -------------------------- 
    13.73              

    (1 row(s) affected)
    相关文章
    本页查看次数: