我正在尝试使用以下 postgresql 中的基本数学函数从包含收入值的表中获取标准偏差。

这是我尝试过的:

SELECT sqrt(sum(power(income - (sum(income) / count(income)), 2)) / (count(*) - 1)) FROM income_data

但是,我不断收到以下错误:
ERROR: aggregate function calls cannot be nested

有没有人遇到过这个问题?我觉得获取标准偏差的逻辑应该可行,尽管到目前为止还没有任何运气,但我感谢任何有关如何解决的建议。

最佳答案

您应该在单独的查询中计算平均值,例如在 with 声明中:

with mean as (
    select sum(income) / count(income) as mean
    from income_data
)
select sqrt(sum(power(income - mean, 2)) / (count(*) - 1))
from income_data
cross join mean;

或在派生表中:
select sqrt(sum(power(income - mean, 2)) / (count(*) - 1))
from income_data
cross join (
    select sum(income) / count(income) as mean
    from income_data
) s;

关于sql - 使用基本数学函数查找标准偏差,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45022474/

10-12 17:04