第十章 SQL聚合函数 STDDEV, STDDEV_SAMP, STDDEV_POP
返回数据集的统计标准差的聚合函数。
大纲
STDDEV([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])
STDDEV_SAMP([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])
STDDEV_POP([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])
参数
-
ALL
- 可选-指定标准偏差函数返回表达式的所有值的标准偏差。如果未指定关键字,则这是默认值。 -
DISTINCT
- 可选-指定标准偏差函数返回不同(唯一)表达式值的标准偏差的DISTINCT
子句。DISTINCT
可以指定BY(COL-LIST)
子句,其中COL-LIST
可以是单个字段,也可以是逗号分隔的字段列表。 -
expression
- 任何有效的表达式。通常是包含要分析标准偏差的数据值的列的名称。 -
%FOREACH(col-list)
- 可选-列名或逗号分隔的列名列表。 -
%AFTERHAVING
- 可选-应用HAVING
子句中的条件。
除非表达式的数据类型为DOUBLE
,否则这些函数将返回数字数据类型。如果表达式为DOUBLE
,则返回DOUBLE
。
描述
这三个标准差聚合函数在丢弃NULL值后返回表达式值分布的统计标准差。
也就是说,从数据集的平均值的标准差的量,表示为一个正数。
返回值越大,值的数据集的变化就越大。
STDDEV、STDDEV_SAMP (sample)
和STDDEV_POP (population)
函数是由相应的方差聚合函数派生而来的:
STDDEV | VARIANCE |
STDDEV_SAMP | VAR_SAMP |
STDDEV_POP | VAR_POP |
标准差是相应方差值的平方根。
这些标准差函数可以在引用表或视图的SELECT
查询或子查询中使用。
它们可以在SELECT
列表或HAVING
子句中与普通字段值一起出现。
这些标准偏差函数不能在WHERE
子句中使用。
它们不能在JOIN
的ON
子句中使用,除非SELECT
是子查询。
这些标准偏差函数返回数据类型NUMERIC
的值,精度为36
,刻度为17
,除非表达式是数据类型DOUBLE
,在这种情况下它返回数据类型DOUBLE
。
这些函数通常应用于具有数值的字段或表达式。
它们将非数值值(包括空字符串("
))计算为零(0
)。
这些标准偏差函数会忽略数据字段中的NULL
值。
如果查询没有返回行,或者返回的所有行的数据字段值为NULL
,则返回NULL
。
与所有聚合函数一样,标准差函数可以采用一个可选的DISTINCT
子句。
STDDEV(DISTINCT col1)
返回那些不同(唯一)的col1
字段值的标准偏差。
STDDEV(DISTINCT BY(col2) col1)
返回记录中col1
字段值的标准差,其中col2
值是不同的(唯一的)。
但是请注意,不同的col2
值可能包含一个单独的NULL
值。
当前事务期间所做的更改
与所有聚合函数一样,标准偏差函数总是返回数据的当前状态,包括未提交的更改,而不考虑当前事务的隔离级别。
示例
下面的示例使用STDDEV
返回员工年龄的标准偏差。
,以及一个或多个员工代表的不同年龄的标准差:
avg = (37+26)/2 = 31.5
min = (37 - 31.5)^2 + (26-31.5)^2 = 60.5
res = \sqrt{60.5} = 7.778
SELECT STDDEV(Age) AS AgeSD,STDDEV(DISTINCT Age) AS PerAgeSD
FROM Sample.Employee WHERE %ID IN (116,117)
image.png
下面的示例使用STDDEV_POP
返回员工年龄的总体标准差。
,以及一个或多个员工代表的不同年龄的标准差:
SELECT STDDEV_POP(Age) AS AgePopSD,STDDEV_POP(DISTINCT Age) AS PerAgePopSD
FROM Sample.Employee
image.png
网友评论