FE SUBJECT A
基本情報技術者 科目Aの問題解説:商品表から単価が16000円以上23000円未満の商品を抽出…
問題
商品表から単価が16000円以上23000円未満の商品を抽出する条件として適切なSQLはどれか。
- ア SELECT * FROM 商品表 WHERE 単価 >= 16000 AND 単価 < 23000;(正解)
- イ SELECT * FROM 商品表 WHERE 単価 > 16000 AND 単価 <= 23000;
- ウ SELECT * FROM 商品表 WHERE 単価 >= 16000 OR 単価 < 23000;
- エ 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ちょうどが混入して『未満』に反する。
この問題について
IPAが公開するシラバス・試験範囲・公開問題の出題形式を参考にした独自作成問題。公式問題・過去問題の転載ではありません。
公式試験問題、過去問題、公式サンプル問題、市販教材の問題文を転載したものではありません。