戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

ITパスポート 2016年 春期 96


問題文

関係データベースの“成績”表から学生を抽出するとき、選択される学生数が最も多い抽出条件はどれか。ここで、“%”は0文字以上の任意の文字列を表すものとする。また、数学及び国語は、それぞれ60点以上であれば合格とする。
ITパスポート 2016年 春期  問96の問題画像

選択肢

国語が合格で、かつ、氏名が“%子”に該当する学生
国語が合格で、かつ、氏名が“子%”に該当する学生
数学、国語ともに合格の学生
数学が合格で、かつ、氏名が“%子%”に該当する学生(正解)

🔒 解説は解答すると表示されます

成績表から学生を抽出する条件のうち、選択される学生数が最も多いもの【ITパスポート 解説】

正解の理由

問題で与えられた条件を1行ずつ確認すると、数学が合格(60点以上)か、国語が合格か、氏名の文字列パターン(LIKE 演算子の %)がどう当てはまるかがポイントです。% は0文字以上の任意の文字列を表します。
各選択肢を満たす学生数を数えると、数学が合格で氏名に「子」が含まれる(氏名 LIKE '%子%')を条件とする が最も多く、3人になります。したがって が正解です。

解法ステップ

  1. 「合格」の定義を確認:数学・国語ともに「60点以上」で合格(>=60)。
  2. 氏名のパターン意味を整理:
    • '%子':文字列の末尾が「子」
    • '子%':文字列の先頭が「子」
    • '%子%':文字列のどこかに「子」が含まれる
  3. 各学生について、数学合否・国語合否・氏名パターン該当を判定する。
  4. 各選択肢について条件を満たす学生を数え、最大のものを選ぶ。
具体的な評価(簡潔):
  • H001 佐藤 花子(数学50, 国語90)→ 国語合格、氏名は末尾が「子」 → matches '%子' と '%子%'
  • H002 鈴木 二郎(数学55, 国語70)→ 国語合格、氏名に「子」なし
  • H003 金子 一郎(数学90, 国語95)→ 数学・国語合格、氏名に「子」が含まれるが末尾ではない → matches '%子%'
  • H004 高橋 春子(数学70, 国語55)→ 数学合格、氏名は末尾が「子」 → matches '%子' と '%子%'
  • H005 子安 三郎(数学95, 国語60)→ 数学・国語合格、氏名は先頭が「子」 → matches '子%' と '%子%'
それぞれの選択肢の該当人数は次のとおり:
  • ア(国語合格 AND 氏名 LIKE '%子')→ H001 のみ:1人
  • イ(国語合格 AND 氏名 LIKE '子%')→ H005 のみ:1人
  • ウ(数学・国語とも合格)→ H003, H005:2人
  • エ(数学合格 AND 氏名 LIKE '%子%')→ H003, H004, H005:3人 ← 最大

選択肢別の誤答解説

  • ア: 「%子」は末尾が「子」の意味です。末尾が「子」かつ国語合格なのは H001 のみで、1人です。金子(一郎)は氏名に「子」はあるが末尾ではない点に注意。
  • イ: 「子%」は先頭が「子」です。先頭が「子」かつ国語合格は H005(子安 三郎、国語60)のみで、1人です。
  • ウ: 両科目合格(数学も国語も60点以上)は H003 と H005 の2人です。氏名条件は無く、次に多い選択肢ですが より少ないです。
  • エ: 数学合格(数学>=60)かつ氏名に「子」を含む('%子%')は H003、H004、H005 の3人で最多です。したがって正解です。

よくある誤解

  • 「%子」は「子が含まれる」と同義だと思ってしまう誤り:実際は「末尾が子」です。含まれるかどうかは '%子%' を使います。
  • 名前の「子」が苗字か名前かを意識しない:氏名は「苗字 + 空白 + 名前」の1つの文字列なので、末尾・先頭判定は全体の文字列で行われます(例:金子 一郎は「金子」が苗字であっても全体の末尾は「一郎」)。
  • 合格判定を「60点より大きい」と誤る(>60 と見る):問題文は「60点以上」と明記されており、60 点も合格です(>=60)。

補足コラム

SQL(Structured Query Language:構造化照会言語)で今回の選択肢を表すと、以下のようになります(氏名フィールドを「氏名」と仮定)。
  • ア(国語合格かつ末尾が「子」)
SELECT * FROM 成績
WHERE 国語 >= 60
  AND 氏名 LIKE '%子';
  • イ(国語合格かつ先頭が「子」)
SELECT * FROM 成績
WHERE 国語 >= 60
  AND 氏名 LIKE '子%';
  • ウ(数学・国語とも合格)
SELECT * FROM 成績
WHERE 数学 >= 60
  AND 国語 >= 60;
  • エ(数学合格かつ氏名に「子」を含む)
SELECT * FROM 成績
WHERE 数学 >= 60
  AND 氏名 LIKE '%子%';
補足:LIKE のワイルドカードには %(0文字以上) のほかに _(任意の1文字)があります。用途に応じて使い分けます。
覚え方(簡単な語呂):
  • '%子' = 「後ろが子」
  • '子%' = 「前が子」
  • '%子%' = 「どこかに子」

FAQ

Q. 「金子 一郎」はなぜ '%子' に一致しないのですか?
A. 氏名全体は「金子 一郎」で末尾は「一郎」です。'%子' は全体の末尾が「子」であることを要求するため一致しません。'%子%' なら含まれているので一致します。
Q. '%子%' は '子' だけの名前にもマッチしますか?
A. はい。% は0文字以上の任意文字列なので、文字列が「子」の場合も '%子%' は一致します。
Q. 合格基準が「60点以上」なら60点は合格ですか?
A. はい。「以上」は >= の意味です。60点は合格になります。

関連キーワード: SQL、LIKE、ワイルドカード、文字列検索、比較演算子、SELECT、WHERE、合格判定、氏名検索
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

ITパスポート
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について