本文へスキップ

FE SUBJECT A

基本情報技術者 科目Aの問題解説:商品表から単価が16000円以上23000円未満の商品を抽出…

テクノロジ系 標準 fe_a_s010_q007

問題

商品表から単価が16000円以上23000円未満の商品を抽出する条件として適切なSQLはどれか。

  1. SELECT * FROM 商品表 WHERE 単価 >= 16000 AND 単価 < 23000;(正解)
  2. SELECT * FROM 商品表 WHERE 単価 > 16000 AND 単価 <= 23000;
  3. SELECT * FROM 商品表 WHERE 単価 >= 16000 OR 単価 < 23000;
  4. SELECT * FROM 商品表 WHERE 単価 BETWEEN 16000 AND 23000;
出典:オリジナル問題|参考範囲:試験要綱Ver.5.5 / FEシラバスVer.9.2 科目A範囲

正解と解説

正解:SELECT * FROM 商品表 WHERE 単価 >= 16000 AND 単価 < 23000;

考え方:境界値を含むか含まないかを正しく書き分けるのがポイントです。「16000円以上」は16000を含むので >= 16000,「23000円未満」は23000を含まないので < 23000 を使います。さらに、両方の条件を同時に満たす商品だけを抽出するため、条件は AND で結びます。

誤答の理由:イは下限・上限の含み方が逆で、16000円ちょうどを除外し、23000円ちょうどを含んでしまいます。ウは OR のため条件が広すぎます。エの BETWEEN は基本的に両端を含むので「23000円未満」にはなりません。

軽い類題:「5000円以上8000円以下」を抽出するなら WHERE 単価 >= 5000 AND 単価 <= 8000 です。以上・以下は境界を含み、未満・超過は境界を含まない、と覚えておくと迷いません。

他の選択肢はなぜ違う?

  • > と <= では境界がずれる。16000ちょうどが漏れ、23000ちょうどが混入する。
  • ORではどちらか一方を満たせば通ってしまい、ほぼ全件が対象になる。
  • BETWEENは両端を含むため、23000ちょうどが混入して『未満』に反する。

この問題について

出典:オリジナル問題|参考範囲:試験要綱Ver.5.5 / FEシラバスVer.9.2 科目A範囲

IPAが公開するシラバス・試験範囲・公開問題の出題形式を参考にした独自作成問題。公式問題・過去問題の転載ではありません。

公式試験問題、過去問題、公式サンプル問題、市販教材の問題文を転載したものではありません。

参考範囲: シラバスVer.9.2参考

参考文献・出典(公式情報)

RELATED

関連問題