- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:group by 0とnull値は、平均値の計算から省きたい)
SQLで平均値を求める際に0とnullを除外したい方法
このQ&Aのポイント
- SQLで平均値を求める際に0とnullの値を除外する方法について教えてください。
- 具体的には、複数のフィールドの平均値を求める際に、0とnullを除外した計算方法を知りたいです。
- Oracle10の環境で使用する方法を教えていただけると助かります。
- みんなの回答 (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; ---------------------------------------------------------------------
その他の回答 (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; ---------------------------------------------------------------------
お礼
回答ありがとうございます。(お礼はこちらだけに記述します。) いくつもの解決方法を教えてくださり感謝しています。 無事解決できそうです。 関数内で条件が書けるなんて、自分の勉強不足を痛感しました。 本当にありがとうございました。