A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>>同じ計算をSELECT文の中にいれると、
>>エラーにならず、計算結果がでるのですが、どうしてでしょうか?
DBによってはエラーになります
Oracleではエラーにならないのかな?
今Oracle環境が無いものでわかりません
SELECT DATA, (A + B - C) / (A + B) * 100 FROM table
の結果はoracleどうなっているのですか?
A+B=0である場合に無限をあらわす値がどう表されているか知りたいです
他のDBでもエラーが出ないようにする方法としては
(A + B - C) / (A + B) * 100を
case when A+B=0 then null else (A + B - C) / (A + B) * 100 end
と表すほうが安全です
SELECT DATA FROM table WHERE (A + B - C) / (A + B) * 100 <= 50.0
ですが上記のようにcaseを使用しても良いですが
(A + B - C) / (A + B) * 100 <= 50.0 を
(A + B - C) * 100 <= (A + B) * 50.0 と
しても良いのではないでしょうか?
ただしA+B=0場合に前者は不明、後者はC>=0でtrue,C<0でfalseになる違いがあることに注意してください
この回答への補足
SELECT DATA, (A + B - C) / (A + B) * 100 FROM tableだと
割り切れず、13.37281153.....というような結果が返ってきます。
このあたりが原因のような気もするのですが、TRUNC関数で
少数以下の桁数をあわせてもだめでした。
(A + B - C) * 100 <= (A + B) * 50.0とするとうまくいくのですが、
A,B,Cのいずれかが0になる場合もあるので、そのあたりを検証してみたいと思います。
No.1
- 回答日時:
100 <= 50.0の部分を先に論理演算して、”偽”だから数値的にはゼロにしているのではないでしょうか。
エラーになるのかもしれませんか、
SELECT 100 <= 50.0 FROM table
の結果はどうなるでしょうか。
WHERE ( (A+B-C)/(A+B)*100 ) <= 50.0
だと、どういう結果になるでしょうか。
この回答への補足
SELECT 100 <= 50.0 FROM table だとエラーになりました。
( (A+B-C)/(A+B)*100 ) <= 50.0でも試してみたのですがm
やはり「除数が0です」と言われてしまいます...。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- PHP PHP MySql ページング 2 2022/09/20 06:38
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 日本の全市区町村を人口密度が低 1 2023/06/18 19:51
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ORA-01013のエラーについて経験...
-
PL/SQLのコンパイルエラーにつ...
-
「ORA-00907: 右カッコがありま...
-
CASE文のエラーについて
-
PL/SQL PLS-00103エラーについて
-
はじめまして!
-
SQLLOADER
-
pro*c で pl/sql に変数を渡す...
-
ストアドファンクションの実行
-
ORA-14459: GLOBALキーワードが...
-
ストアド実行でORA-4030エラー
-
HAVING句でのBETWEEN演算子
-
ORA-01843: 指定した月が無効で...
-
PCC-S-02201エラーの対処を教え...
-
LinuxにOracle10のExpress無料...
-
【Oracle】リモートでのimpコマ...
-
Oracle9 union使用時の結合制限...
-
インポート時のエラーについて
-
データベースのカラムの型がCHA...
-
シェルスクリプトでオラクルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ORA-01013のエラーについて経験...
-
CASE文のエラーについて
-
PL/SQLのコンパイルエラーにつ...
-
「ORA-00907: 右カッコがありま...
-
PL/SQL PLS-00103エラーについて
-
はじめまして!
-
シェルスクリプトでオラクルの...
-
PCC-S-02201エラーの対処を教え...
-
ストアドファンクションの実行
-
HAVING句でのBETWEEN演算子
-
ORA-01843: 指定した月が無効で...
-
ORA-06502のエラー
-
DATABSE LINKについて
-
PL/SQLでPLS-00201のエラー
-
sqlのエラーハンドリングについ...
-
PL/SQLによるCREATE TABLE後のI...
-
ACCESSでパススルークエリにパ...
-
SQLLOADER
-
PL-SQLでORA-01013エラー
-
無効なSQL文の具体例を教えてく...
おすすめ情報