問題本文
"気温"表の2011年の7月1日から8月31日までの間で,最高気温が35度以上のレコードを全て抽出したい。抽出条件として,適切なものはどれか。 気温
選択肢
- ア.年 = 2011 and (月 = 7 and 月 = 8) and 最高気温 ≦ 35
- イ.年 = 2011 and (月 = 7 and 月 = 8) and 最高気温 ≧ 35
- ウ.年 = 2011 and (月 = 7 or 月 = 8) and 最高気温 ≦ 35
- エ.年 = 2011 and (月 = 7 or 月 = 8) and 最高気温 ≧ 35
正解
エ. 年 = 2011 and (月 = 7 or 月 = 8) and 最高気温 ≧ 35
解説
DB検索条件の作成では論理演算子(and/or)と比較演算子(<,,≦,≧,=)の使い方が重要なポイントとなる. 「7月または8月」は同じレコードで月=7と月=8が同時に成立しない条件なので,andで結ぶと結果が常に偽になり1件もヒットしない誤りとなる. 正しくはorで結合し,さらに括弧で他条件と分離する必要がある(演算子優先順位の制御). 「最高気温35度以上」は不等号で「最高気温≧35」と表す(「以下」を表す「≦35」は逆条件で不適切). よって正解はエの「年=2011 and (月=7 or 月=8) and 最高気温≧35」で,検索条件の論理組立ての基本パターンを問う問題である.
選択肢ごとの解説
- ア.誤り. 「月=7 and 月=8」は同じレコード内では同時に成立しない条件をandで結んでいるため,常に偽となり1件もヒットしない誤った論理式である. かつ「最高気温≦35」は35度以下を意味するため,本問が求める「35度以上」の条件方向とも逆になっており,二重に誤った検索条件となる.
- イ.誤り. 「月=7 and 月=8」は同時に成立しない条件をandで結んでいるため,常に偽となりヒットしない論理ミスを含む条件である. 最高気温≧35の方向は正しいものの,月の論理演算子がandのままでは7月・8月の対象レコードを抽出できず,検索条件として機能しないため誤りである.
- ウ.誤り. 「月=7 or 月=8」のorは正しい論理結合だが,「最高気温≦35」は35度以下を意味する条件で,本問が求める「最高気温35度以上」とは抽出条件の方向が逆である. 不等号の向きが間違っており,期待する高温日ではなく低温日のレコードを抽出してしまう不適切な条件である.
- エ.正しい. 「年=2011 and (月=7 or 月=8) and 最高気温≧35」は,2011年の7月もしくは8月のうち最高気温が35度以上のレコードを抽出する検索条件として論理的に正しいため. or による月の論理結合,括弧で優先順位制御,≧35の不等号の方向がいずれも適切に組み立てられている条件式である.
ITパスポート 2016年 (平成28年 秋期) の過去問一覧へ戻る・問74