VAR_SAMP [analytic]

窗口内组中的每行返回非 NULL 数字集(将忽略集中的 NULL 值)的样本方差。结果的计算方法如下所示:

(SUM( expression * expression ) - SUM( expression ) * SUM( expression ) / COUNT( expression ) )
/ (COUNT( expression ) - 1 )

此函数与 VARIANCE 在一个方面有所不同:对于某个元素的输入集,VARIANCE 返回 0,而 VAR_SAMP 返回 NULL

行为类型

不可变

语法

VAR_SAMP ( expression ) OVER (
    [ window-partition-clause ]
    [ window-order-clause ]
    [ window-frame-clause ] )

参数

表达式
任何 NUMERIC 数据类型或可隐式转换为数字数据类型的任何非数字数据类型。函数返回的数据类型与参数的数字数据类型相同
OVER()
请参阅分析函数

Null 处理

  • VAR_SAMP 丢弃一组数字中的 NULL 值,然后返回剩余数据的样本方差。

  • 如果将此函数应用于空集,则会返回 NULL

示例

下述示例计算 2007 年 12 月商店销售订单事实表的样本方差:

=> SELECT date_ordered,
      VAR_SAMP(SUM(total_order_cost))
      OVER (ORDER BY date_ordered) "var_samp"
   FROM store.store_orders_fact s
   WHERE date_ordered BETWEEN '2007-12-01' AND '2007-12-31'
   GROUP BY s.date_ordered;
 date_ordered |     var_samp
--------------+------------------
 2007-12-01   |              NaN
 2007-12-02   |      90642601088
 2007-12-03   | 48030548449.3359
 2007-12-04   | 32740062504.2461
 2007-12-05   | 32100319112.6992
 2007-12-06   |  26274166814.668
 2007-12-07   | 23017490251.9062
 2007-12-08   | 21099374085.1406
 2007-12-09   | 27462205977.9453
 2007-12-10   | 26288687564.1758
(10 rows)

另请参阅