- ベストアンサー
SQL2005 調和平均
SQL Server 2005で、調和平均を使うクエリを作りたいのです。 ExcelならばHERMEAN関数を使えば一発で出ますが、SQLにはないですよね? CREATE FUNCTIONを使うか、クエリだけでいけるのかよくわかりません。 自分でクエリを書いてみたのですが、なにぶん初心者で、データがゼロの場合にエラーになったりしてうまくいきません。 どうすれば一番簡単に作れるでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
計算式をベタ書きすれば良いのでは。こんな感じ: 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()が使えるかも。
その他の回答 (1)
- osamuy
- ベストアンサー率42% (1231/2878)
回答No.1
調和平均は、逆数の平均の逆数ですので、テーブルT項目Vの調和平均なら、 select 1/avg( 1/V ) from T where v<>0; ――でダメかな?
質問者
補足
あぁぁ~、ごめんなさい。 説明不足でした。 全レコードの1項目ずつをとるのではなく、 1レコードの複数項目の調和平均をとりたいのです。 つまり、クエリの結果が、 項目1,項目2,項目3,項目1~3の調和平均 となるようにしたいのです。
お礼
何度もお世話になります。 ベタ書きでうまくいきそうです。 ただ、こういう計算をする場合、元テーブルの各項目が整数定義になっているとエラーになりますね。 テーブルを作り直す必要が出てきそうです。(^^;) 回答をありがとうございました。