SQL Server 2008を使用していますが、私の要件の1つは母集団標準偏差を計算することです。 SQL Serverには、同じものとして組み込み関数stdevp
が用意されています。私はそれを使用していますが、私が得ている結果に悩まされています。同じ数字のグループの母集団標準偏差はゼロでなければならないが、ここでは微妙な値ではあるが異なるものがある。SQL Serverの組み込み関数Stdevpが正しく計算されない
drop table guest.tempTable;
create table guest.tempTable (column1 varchar , column2 decimal(10,6))
insert into guest.tempTable values('a',3578.2700);
insert into guest.tempTable values('a',3578.2700);
insert into guest.tempTable values('a',3578.2700);
insert into guest.tempTable values('a',3578.2700);
insert into guest.tempTable values('a',3578.2700);
commit;
次は、STDEVPクエリです:私が得る
select stdevp(column2) from guest.tempTable
group by column1
結果は0.00となっているはずです
------------------------
5.459150335692846E-5
です。
stdevp
のドキュメントでは、floatを返すと記載されています。だから私はこれを切り捨てなければならないと思っていますが、私は解決策を見つけることができません。
はい、この問題は四捨五入されていますが、上記のフィールド(またはデータ型自体)の精度を変更した場合など、正しい結果を得られる解決法があれば、しかし、私はそれがまだ同じ浮動小数点演算を行っていると思います。( – rirhs
浮動小数点なしでそれを行う可能性のある解決策が1つあります。 –
他のデータ型を使用しようとしましたが、アプリケーション層のstdevをデータベース層で計算するのではなく、計算することに頼っています。そして、それを許容範囲内に丸めます。何らかの形で、javaのstdevは、SQLServerと比較して比較的正確な結果を得ています(ただし、まだ0にはなりません)。したがって、私はこのアプローチをとっています。 – rirhs