• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:group by  0とnull値は、平均値の計算から省きたい)

SQLで平均値を求める際に0とnullを除外したい方法

このQ&Aのポイント
  • SQLで平均値を求める際に0とnullの値を除外する方法について教えてください。
  • 具体的には、複数のフィールドの平均値を求める際に、0とnullを除外した計算方法を知りたいです。
  • Oracle10の環境で使用する方法を教えていただけると助かります。

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

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.2

No.1です。 AVG関数を使えばもっと簡単にできました。 例) ----------------------------------------------------------------- SELECT AVG(CASE WHEN a = 0 THEN NULL ELSE a END), AVG(CASE WHEN b = 0 THEN NULL ELSE b END), AVG(CASE WHEN c = 0 THEN NULL ELSE c END) FROM avg_sample; ---------------------------------------------------------------------

namida6000
質問者

お礼

回答ありがとうございます。(お礼はこちらだけに記述します。) いくつもの解決方法を教えてくださり感謝しています。 無事解決できそうです。 関数内で条件が書けるなんて、自分の勉強不足を痛感しました。 本当にありがとうございました。

その他の回答 (1)

  • root139
  • ベストアンサー率60% (488/809)
回答No.1

Oracleでは、確認してませんが、CASE式を使えば出来るかと。 例) ----------------------------------------------------------------- SELECT SUM(a) / COUNT(CASE WHEN a = 0 THEN NULL ELSE a END), SUM(b) / COUNT(CASE WHEN b = 0 THEN NULL ELSE b END), SUM(c) / COUNT(CASE WHEN c = 0 THEN NULL ELSE c END) FROM hoge; ---------------------------------------------------------------------

参考URL:
http://www.geocities.jp/mickindex/database/db_case.html

関連するQ&A