2017-07-10 32 views
2

postgresqlの基本的な数学関数を使用して、所得値を含むテーブルから標準偏差を取得しようとしています。基本的な数学関数を使用して標準偏差を見つける

は、これは私が試したものです:

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

しかし、私は次のエラーを取得しておいてください。

ERROR: aggregate function calls cannot be nested 

は、誰もがこの問題に遭遇していますか?私は標準偏差を得るための論理がうまくいくように感じるが、それまでのところ運がなかったので、解決する方法についての提案は感謝する。

+1

ただ、 'STDDEVを()'を使用します。ホイールを再発明する必要はありません。 –

+0

はい、私はstddevがこれをより簡単にすることを認識していますが、考えられるのは、上記のリストのような基本的な数学関数を使用して、stddev – AnchovyLegend

答えて

4

平均を別のクエリで計算する必要があります(例:

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; 

または派生テーブルで:with文で

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; 
関連する問題