0

たとえば、以下のようなテーブルがあるとします。

id, c1, c2, c3, ..... c365, StdDeviation
1 , 3 , 7 , 1 , ..... c365, null
2 , 4 , 5 , 2 , ..... c365, null
3 , 5 , 3 , 4 , ..... c365, null
4 , 6 , 2 , 6 , ..... c365, null
5
.
.
millions

MySQLを使用して以下を取得したい

id, c1, c2, c3, ..... c365, StdDeviation
1 , 3 , 7 , 1 , ..... c365, *standard deviation of this row*
2 , 4 , 5 , 2 , ..... c365, *standard deviation of this row*
3 , 5 , 3 , 4 , ..... c365, *standard deviation of this row*
4 , 6 , 2 , 6 , ..... c365, *standard deviation of this row*
5
.
.
millions

STDDEV()縦向きなので使えません。解決策はありますか?

4

1 に答える 1

1

さて、標準偏差は平均分散の平方根です。ここでそれについて読むことができます。

標準式を使用してこれを計算するには、多くの算術演算が必要です。形式は次のとおりです。

select sqrt((pow(c1 - cavg, 2) + pow(c2 - cavg, 2) + . . .
            ) / 365
           ) as stdev
from (select t.*,
             (c1 + c2 + c3 + . . . + c365)/365 as cavg
      from yourtable t
     ) t

これらの式は長いです。Excel などのツールを使用して自動的に生成することをお勧めします。

別の定式化がありますが、それでも値の 2 乗を合計し、値の合計の 2 乗を取る必要があるため、式を簡単に書き出すことはできません。

データ ポイントごとに 1 行という、より正規化された形式でデータを格納すると、式を表現するのがはるかに簡単になります。それが集計関数の機能std()です。

于 2013-07-07T19:07:39.537 に答える