問21 AND と OR を含む WHERE 句

情報処理​安全確保​支援士 令和6年度 春期 午前II、全25問のうちの問21。

出典:令和6年度 春期 情報処理安全確保支援士試験 午前II 問21(表は原本の画像を文字に書き起こした。SQL 文は字下げを省いて問題文に入れた)

“人事”表に対して次の SQL 文を実行したとき,結果として得られる社員番号はどれか。

人事
社員番号所属勤続年数年齢
1総務部1⁠33⁠1
2総務部52⁠8
3人事部1⁠12⁠8
4営業部83⁠0
5総務部72⁠9

〔SQL 文〕

SELECT 社員番号 FROM 人事

WHERE (勤続年数 > 1⁠0 OR 年齢 > 2⁠8)

AND 所属 = '総務部'

  1. ア1,2,5
  2. イ1,3,4,5
  3. ウ1,3,5
  4. エ1,5
答えと解説を開く

正解はエです。

WHERE 句は、かっこの中の OR を先にまとめ、それと所属の条件を AND で結んでいます。まず所属が総務部の社員は、社員番号 1、2、5 です。次に、この 3 人がかっこの中の条件を満たすかを見ます。社員番号 1 は勤続年数 1⁠3 で 1⁠3 > 1⁠0 なので満たします。社員番号 2 は勤続年数 5 で 1⁠0 以下、年齢 2⁠8 で 2⁠8 より大きくないので満たしません。社員番号 5 は勤続年数 7 で 1⁠0 以下ですが、年齢 2⁠9 で 2⁠9 > 2⁠8 なので満たします。残るのは 1 と 5 です。正解はエです。

ほかの選択肢が違う理由

  • ア社員番号 2 は、勤続年数 5 も年齢 2⁠8 も条件を満たしません。年齢は 2⁠8 より大きいことが条件なので、2⁠8 は入りません。
  • イ社員番号 3 は人事部、4 は営業部で、所属が総務部という条件を満たしません。かっこの中の条件だけを見ると、この誤りになります。
  • ウ社員番号 3 は勤続年数 1⁠1 でかっこの中の条件を満たしますが、所属が人事部なので外れます。

仕組み

AND と OR が混ざった条件では、かっこの付け方で結果が変わります。かっこがないと AND が先に結び付くので、意図した組合せは必ずかっこで示します。

「>」は、その値を含みません。境目の値 (この問題では年齢 2⁠8) を含むかどうかは、SQL の条件で間違いやすい所です。

この問に出る言葉