AVG 函数

avg([DISTINCT] expr) [FILTER (WHERE condition)]

功能描述

AVG
AVG
函数用于计算指定表达式在一组数据中的算术平均值。当指定
DISTINCT
DISTINCT
关键字时,将计算去重后的平均值。

参数说明

  • expr
    expr
    :数值类型表达式,可以是
    TINYINT
    TINYINT
    SMALLINT
    SMALLINT
    INT
    INT
    BIGINT
    BIGINT
    FLOAT
    FLOAT
    DOUBLE
    DOUBLE
    DECIMAL
    DECIMAL
    类型。

返回类型

  • 对于
    DECIMAL
    DECIMAL
    类型表达式,
    AVG
    AVG
    函数返回
    DECIMAL
    DECIMAL
    类型的结果。返回值的精度(
    precision
    precision
    )和标度(
    scale
    scale
    )可能会增加以适应计算结果。
  • 对于其他数值类型表达式,
    AVG
    AVG
    函数返回
    DOUBLE
    DOUBLE
    类型的结果。

注意事项

  • 函数计算过程中,
    NULL
    NULL
    值将被忽略,不参与平均值的计算。

使用示例

  1. 计算数值列的平均值(不包含
    NULL
    NULL
    值):

SELECT avg(col) FROM VALUES (1), (2), (3), (4), (NULL) AS tab(col); +------------+ | `avg`(col) | +------------+ | 2.5 | +------------+

  1. 计算去重后数值列的平均值:

SELECT avg(DISTINCT col) FROM VALUES (1), (1), (2), (3), (4), (NULL) AS tab(col); +---------------------+ | `avg`(DISTINCT col) | +---------------------+ | 2.5 | +---------------------+

  1. 使用 FILTER 子句条件性地计算平均值:

SELECT avg(col) FILTER (WHERE col > 2) FROM VALUES (1), (2), (3), (4), (NULL) AS tab(col); +---------------------------------------+ | `avg`(col) FILTER (WHERE (col > 2)) | +---------------------------------------+ | 3.5 | +---------------------------------------+

  1. 结合 FILTER 子句和 DISTINCT 计算去重后的条件平均值:

SELECT avg(DISTINCT col) FILTER (WHERE col <= 3) FROM VALUES (1), (1), (2), (3), (4) AS tab(col); +------------------------------------------------------+ | `avg`(DISTINCT col) FILTER (WHERE (col <= 3)) | +------------------------------------------------------+ | 2.0 | +------------------------------------------------------+

联系我们
预约咨询
微信咨询
电话咨询