助け合いフォーラム
Oracle Master Silver SQL 2019(1Z0-071)
問題ID : 26431
問題を開く
次のSQL文の実行結果として表示される列の組合せとして、正しいものはどれですか(該当するものを全て選択してください)。
ただし、日付書式は「RR-MM-DD」とします。
SELECT department_id, employee_id, employee_name, salary, commission, hiredate
FROM employees
WHERE (department_id = 3
OR salary > 400000)
AND commission <= 1200000
OR hiredate > '08-04-01';
ただし、日付書式は「RR-MM-DD」とします。
SELECT department_id, employee_id, employee_name, salary, commission, hiredate
FROM employees
WHERE (department_id = 3
OR salary > 400000)
AND commission <= 1200000
OR hiredate > '08-04-01';
正解
B
C
E
解説
WHERE句に条件が複数指定されている場合は、論理演算子の優先順位に従って条件が評価されます。
AND演算子とOR演算子ではAND演算子のほうが先に評価されますが、()括弧がある場合は、括弧内の演算子を優先して評価します。

WHERE (department_id = 3
OR salary > 400000)
AND commission <= 1200000
OR hiredate > '08-04-01';
設問のWHERE句は、以下の順序で評価されます。
①まず、括弧内の「department_id = 3 OR salary > 400000」が評価されます。
②次に、その結果とANDで結ばれた「commission <= 1200000」が評価されます。
③最後に、ORで結ばれた「hiredate > '08-04-01'」が評価されます。
この結果、条件を満たす行はE(①②の条件を満たす)、B・C(③の条件を満たす)となります。
以上より、
・E
・B
・C
が正解となります。
その他の選択肢については以下のとおりです。
・A
・D
department_id = 3 OR salary > 400000 の条件は満たしますが、commission <= 1200000 の条件を満たしません。
AND演算子とOR演算子ではAND演算子のほうが先に評価されますが、()括弧がある場合は、括弧内の演算子を優先して評価します。

WHERE (department_id = 3
OR salary > 400000)
AND commission <= 1200000
OR hiredate > '08-04-01';
設問のWHERE句は、以下の順序で評価されます。
①まず、括弧内の「department_id = 3 OR salary > 400000」が評価されます。
②次に、その結果とANDで結ばれた「commission <= 1200000」が評価されます。
③最後に、ORで結ばれた「hiredate > '08-04-01'」が評価されます。
この結果、条件を満たす行はE(①②の条件を満たす)、B・C(③の条件を満たす)となります。
以上より、
・E
・B
・C
が正解となります。
その他の選択肢については以下のとおりです。
・A
・D
department_id = 3 OR salary > 400000 の条件は満たしますが、commission <= 1200000 の条件を満たしません。
参考
SQL文ではWHERE句で論理演算子を使用して、条件を複数記述したり、条件の判定結果を反転させることができます。
論理演算子には以下のものがあります。

複数の条件が指定されている場合は、以下の優先順位に従って評価されます。

優先順位を変更したい場合は、先に評価したい演算を()括弧で囲むことで優先順位を高く変更できます。
論理演算子には以下のものがあります。

複数の条件が指定されている場合は、以下の優先順位に従って評価されます。

優先順位を変更したい場合は、先に評価したい演算を()括弧で囲むことで優先順位を高く変更できます。
日付リテラルの扱い
R
Rinux99
投稿日 2026/04/12
表に格納されている値はYY-MM-DDまたはRR-MM-DDの構成となっていると思いますが、
WHERE句ではYYYY-MM-DDの形式で記載されていたため気になりました。
問題文に格納されている日付の順序がどのような構成になっているのか一文添えておかないと迷うかと思います。
また、実務での使用について参考や解説の内容に組み込むべき内容として以下があげられると思いました。
・NLS_DATE_FORMATのデフォルト値と異なる日付の記述方法を行った場合はエラーとなる。
・TO_DATE関数を使用して指定することで安全に日付を指定することができる。
スタッフからの返信
この投稿に対して返信しませんか?
s staff_ishii
2026/04/14 22:44
Rinux99 さん、 ご指摘の点を修正いたしました。 ご報告、誠にありがとうございました。