VARIANCE 函数

VARIANCE 函数返回总体方差的估计值,即标准差的平方。

VARIANCE 计算下列值:
(SUM(Xi2) - (SUM(Xi)2)/N)/(N - 1)
在此公式中,
  • Xi 是该列中的每一值,
  • N 是该列中非 NULL 值的总数目(除非所有值都是 NULL,在此情况下,逻辑上未定义方差,且 VARIANCE 函数返回 NULL)。

您仅可对数值列应用 VARIANCE 函数。

下列查询估算人口的 age 值的方差:
SELECT VARIANCE(age) FROM u_pop WHERE u_pop.age > 0;
同其他聚集一样,当查询包括 GROUP BY 子句时,对组的行应用 VARIANCE 函数,如此例所示:
SELECT VARIANCE(age) FROM u_pop GROUP BY birth
          WHERE VARIANCE(age) > 0;

如前面指出的那样,VARIANCE 忽略 NULL 值,除非对于指定的列每个限定的行都是 NULL。如果每个值都是 NULL,则 VARIANCE 为那列返回 NULL 结果。(这通常表示丢失数据,且不可避免地不是潜在的总体方差的一个好的估计。)

如果限定的非 NULL 列值的总数目 N 等于 1,则 VARIANCE 函数返回零(真实总体方差的另一不可信的估算)。要忽略此特殊情况,您可修改查询。例如,您可以包括 HAVING COUNT(*) > 1 子句。
Important: 以 32 位数字精度执行 VARIANCE 函数的所有计算,对于许多输入数据集,这应足够了。然而,当所有输入数据值都有 16 位数字或更高的精度时,该计算会丢失精度或返回不正确的结果。

虽然在内部将 DATE 数据存储为整数,但您不可在 DATE 数据类型的列上使用 VARIANCE 函数。