STDDEV_SAMP 和 STDDEV_POP 窗口函数 - Amazon Redshift

STDDEV_SAMP 和 STDDEV_POP 窗口函数

STDDEV_SAMP 和 STDDEV_POP 窗口函数返回一组数值(整数、小数或浮点)的样本标准差和总体标准差。另请参阅 STDDEV_SAMP 和 STDDEV_POP 函数

STDDEV_SAMP 和 STDDEV 是同一函数的同义词。

语法

STDDEV_SAMP | STDDEV | STDDEV_POP ( [ ALL ] expression ) OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list frame_clause ] )

参数

expression

对其执行函数的目标列或表达式。

ALL

利用参数 ALL,该函数可保留表达式中的所有重复值。ALL 是默认值。DISTINCT 不受支持。

OVER

指定聚合函数的窗口子句。OVER 子句将窗口聚合函数与普通集合聚合函数区分开来。

PARTITION BY expr_list

依据一个或多个表达式定义函数的窗口。

ORDER BY order_list

对每个分区中的行进行排序。如果未指定 PARTITION BY,则 ORDER BY 使用整个表。

frame_clause

如果 ORDER BY 子句用于聚合函数,则需要显式框架子句。框架子句优化函数窗口中的行集,包含或排除已排序结果中的行集。框架子句包括 ROWS 关键字和关联的说明符。请参阅 窗口函数语法摘要

数据类型

STDDEV 函数支持的参数类型包括 SMALLINT、INTEGER、BIGINT、NUMERIC、DECIMAL、REAL 和 DOUBLE PRECISION。

无论表达式的数据类型如何,STDDEV 函数的返回类型都是双精度数。

示例

以下示例说明如何使用 STDDEV_POP 和 VAR_POP 作为窗口函数。查询计算 SALES 表中 PRICEPAID 值的总体方差和总体标准差。

select salesid, dateid, pricepaid, round(stddev_pop(pricepaid) over (order by dateid, salesid rows unbounded preceding)) as stddevpop, round(var_pop(pricepaid) over (order by dateid, salesid rows unbounded preceding)) as varpop from sales order by 2,1; salesid | dateid | pricepaid | stddevpop | varpop --------+--------+-----------+-----------+--------- 33095 | 1827 | 234.00 | 0 | 0 65082 | 1827 | 472.00 | 119 | 14161 88268 | 1827 | 836.00 | 248 | 61283 97197 | 1827 | 708.00 | 230 | 53019 110328 | 1827 | 347.00 | 223 | 49845 110917 | 1827 | 337.00 | 215 | 46159 150314 | 1827 | 688.00 | 211 | 44414 157751 | 1827 | 1730.00 | 447 | 199679 165890 | 1827 | 4192.00 | 1185 | 1403323 ...

样本标准差和样本标准方差函数可通过同一方式使用。