質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

2回答

387閲覧

SQL問い合わせによる行の制限とソート

King_of_Flies

総合スコア382

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2017/09/07 08:00

現在資格勉強の関係で
Oracle Master Bronzeの Bronze SQL基礎というジャンルの試験学習をしていて
WEBの問題を見つつ学習しているのですが、
下記サイトの問1がなぜ回答aなのか全く理解できないのでどなたか解説をお願いしたいです。

http://www.atmarkit.co.jp/ait/articles/0506/10/news121.html

回答bだと私は思っているのですが、
サイトのミスでしょうか。
それとも私の思考が浅はかなのでしょうか。

問題1

次のデータと要件を確認してください。

EMPNO ENAME SAL COMM


7369 SMITH 800
7499 ALLEN 1600 300
7521 WARD 1250 500
7566 JONES 2975
•SALとCOMMを計算した結果を表示する
•COMMが0の行を表示しない
•COMMがNULLの場合は0とする

次の文を実行したとき、上記の要件を満たすものはいくつありますか?

SELECT empno, sal*comm FROM emp WHERE comm IS NOT NULL;

a. 1つ
b. 2つ
c. 3つ
d. エラーとなる

正解:a

解説

問題のSELECT文では、「COMMがNULLでない行のSALとCOMMの計算結果を表示する」という結果が戻ります。問題の要件に挙げている要素を満たすには次のことが必要です。

回答よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2017/09/07 08:10

どの2つの要件を満たすのか、なぜ満たすと考えたのかを追記ください(何行返るかという問題ではないことに注意)
King_of_Flies

2017/09/07 08:33

私の思考が浅はかでした。SELECTされるデータ件数を求め回答していました。can110さんの()書きのところで「ハッ」としました。ありがとうございます。
can110

2017/09/07 08:36

ちょっとしたひっかけ問題ですね。時間の限られた実試験中なら私も誤読したかもしれません。お気になさらず。
King_of_Flies

2017/09/07 08:41

ちなみに全然関係ないんですけど、今回の設問のテーブルがempになってると思いますが、empって何の略かわかりますか?emproymentの略でしょうか?jobと同じ?
King_of_Flies

2017/09/07 08:43

emproyeeでした。従業員マスタということっぽいので解決しました。
guest

回答2

0

解説にある通りだと思います。

問題のSELECT文では、「COMMがNULLでない行のSALとCOMMの計算結果を表示する」という結果が戻ります

上記に該当するのは、

•SALとCOMMを計算した結果を表示する

だけですから。

COMMがNULLでない行

というのは要件のどれにも当てはまりませんね。

投稿2017/09/07 08:29

sazi

総合スコア25138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

これは実行文において3つの要件のうち満足している要件はいくつ有りますかという問題です。
なので、1番目の要件しか満たしていないというのが答えです。

おそらく、2番めの要件も満たしているのではないか?という疑問でしょうけど、たまたまデータのCOMMに0が無いだけで、もしCOMM=0の行があったら要件を満たさないということになります。

投稿2017/09/07 08:14

編集2017/09/07 08:18
PineMatsu

総合スコア3579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

King_of_Flies

2017/09/07 08:25 編集

...理解しました。 can110さんの捕捉で。 SELECTされるデータ件数ではなく、設問のSELECT分で満たせる要求の個数を問うてる問題だったのですね。 なるほどなるほど。 全部の要求を満たすようにするには SELECT empno,sal*comm, CASE comm when Is NUll Then comm = 0 END FROM emp WHERE comm != 0 とする必要があるということですね。 ありがとうございました。
sazi

2017/09/08 01:45

要件を満たすのは、 SELECT empno, sal*coalesce(comm,0) FROM emp WHERE not(comm=0)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問