こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQL2005 調和平均

SQL Server 2005で、調和平均を使うクエリを作りたいのです。
ExcelならばHERMEAN関数を使えば一発で出ますが、SQLにはないですよね?
CREATE FUNCTIONを使うか、クエリだけでいけるのかよくわかりません。

自分でクエリを書いてみたのですが、なにぶん初心者で、データがゼロの場合にエラーになったりしてうまくいきません。

どうすれば一番簡単に作れるでしょうか。

投稿日時 - 2006-12-19 10:19:51

QNo.2611881

困ってます

質問者が選んだベストアンサー

計算式をベタ書きすれば良いのでは。こんな感じ:

select (abs(sgn( V1 )) +abs(sgn( V2 )) + abs(sgn( V3 ))) / (case V1 when 0 then 0 else 1/V1 end+case V2 when 0 then 0 else 1/V2 end+case V3 when 0 then 0 else 1/V3 end) where T

1列分に射影した表をunionすれば、AVG()が使えるかも。

投稿日時 - 2006-12-19 13:20:59

お礼

何度もお世話になります。
ベタ書きでうまくいきそうです。

ただ、こういう計算をする場合、元テーブルの各項目が整数定義になっているとエラーになりますね。

テーブルを作り直す必要が出てきそうです。(^^;)

回答をありがとうございました。

投稿日時 - 2006-12-19 19:20:33

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.1

調和平均は、逆数の平均の逆数ですので、テーブルT項目Vの調和平均なら、

select 1/avg( 1/V ) from T where v<>0;

――でダメかな?

投稿日時 - 2006-12-19 11:32:17

補足

あぁぁ~、ごめんなさい。
説明不足でした。

全レコードの1項目ずつをとるのではなく、
1レコードの複数項目の調和平均をとりたいのです。

つまり、クエリの結果が、
項目1,項目2,項目3,項目1~3の調和平均
となるようにしたいのです。

投稿日時 - 2006-12-19 12:16:09

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-