助け合いフォーラム
Oracle Master Silver SQL 2019(1Z0-071)
問題ID : 26799
問題を開く
次の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
D
E
解説
WHERE句に条件が複数指定されている場合は、論理演算子の優先順位に従って条件が評価されます。
AND演算子とOR演算子ではAND演算子のほうが先に評価されます。

WHERE department_id = 3
OR salary > 400000
AND commission <= 1200000
OR hiredate > '08-04-01';
よって設問の条件は以下のように検索されます。
「SALARY列が400000より大きく且つCOMMISSION列が1200000以下」(無し)、または、「DEPARTMENT_ID列が3」(D,E)、または、「HIREDATE列が2008年4月1日より大きい(新しい)」(B,C)
以上より、
・D
・E
・B
・C
が正解となります。
AND演算子とOR演算子ではAND演算子のほうが先に評価されます。

WHERE department_id = 3
OR salary > 400000
AND commission <= 1200000
OR hiredate > '08-04-01';
よって設問の条件は以下のように検索されます。
「SALARY列が400000より大きく且つCOMMISSION列が1200000以下」(無し)、または、「DEPARTMENT_ID列が3」(D,E)、または、「HIREDATE列が2008年4月1日より大きい(新しい)」(B,C)
以上より、
・D
・E
・B
・C
が正解となります。
参考
SQL文ではWHERE句で論理演算子を使用して、条件を複数記述したり、条件の判定結果を反転させることができます。
論理演算子には以下のものがあります。

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

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

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

優先順位を変更したい場合は、先に評価したい演算を()括弧で囲むことで優先順位を高く変更できます。
試験でのデフォルトの日付書式について
投稿日 2025/05/18
実際の試験では、日付書式(YYYYMMDD等)が明記されているでしょうか?
問26799の問いがYYYYMMDDであるのに対し、表が"YYMMDD"なのか、"MMDDYY"か判別できません。
アメリカでは"MMDDYY"と"DD-MON-RR"の西暦が後ろにくるパターンがあると聞いていたので不安です。
r
rink_rew
2025/05/19 12:53
受験したのは結構昔なので記憶がかなり曖昧ですが、問題文に「日付の表示形式は○○-⬜︎⬜︎-△△です。」的な文章見かけたことはあった気はしますが、一方で、問題文にその情報が明記されてなくて「どれが月でどれが日だよ...」と迷ったような問題があったような記憶もあります。
あまり参考にならなくてすみません...。
コメント
スタッフからの返信
この投稿に対して返信しませんか?
N Nonstop09
2025/05/19 20:26
ご回答ありがとうございます。ご意見だけでもありがたいです。 明記されてない場合は困りますね、、。今月受験予定なので頑張ります!!