• ベストアンサー

SQL2005 調和平均

SQL Server 2005で、調和平均を使うクエリを作りたいのです。 ExcelならばHERMEAN関数を使えば一発で出ますが、SQLにはないですよね? CREATE FUNCTIONを使うか、クエリだけでいけるのかよくわかりません。 自分でクエリを書いてみたのですが、なにぶん初心者で、データがゼロの場合にエラーになったりしてうまくいきません。 どうすれば一番簡単に作れるでしょうか。

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

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.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()が使えるかも。

mtkame
質問者

お礼

何度もお世話になります。 ベタ書きでうまくいきそうです。 ただ、こういう計算をする場合、元テーブルの各項目が整数定義になっているとエラーになりますね。 テーブルを作り直す必要が出てきそうです。(^^;) 回答をありがとうございました。

その他の回答 (1)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

調和平均は、逆数の平均の逆数ですので、テーブルT項目Vの調和平均なら、 select 1/avg( 1/V ) from T where v<>0; ――でダメかな?

mtkame
質問者

補足

あぁぁ~、ごめんなさい。 説明不足でした。 全レコードの1項目ずつをとるのではなく、 1レコードの複数項目の調和平均をとりたいのです。 つまり、クエリの結果が、 項目1,項目2,項目3,項目1~3の調和平均 となるようにしたいのです。

関連するQ&A