平成28年度 春期 ITパスポート試験 問96 解説 SQL抽出条件
関係データベースの“成績”表から学生を抽出するとき,選択される学生数が最も多い抽出条件はどれか。ここで,“%”は0文字以上の任意の文字列を表すものとする。また,数学及び国語は,それぞれ60点以上であれば合格とする。
- ア 国語が合格で,かつ,氏名が“%子”に該当する学生
- イ 国語が合格で,かつ,氏名が“子%”に該当する学生
- ウ 数学,国語ともに合格の学生
- エ 数学が合格で,かつ,氏名が“%子%”に該当する学生 ✓ 正答
解説
この問題は、提示された表に対して各選択肢の条件を一つずつ当てはめ、対象となるレコード(行)の数をカウントして比較することで解けます。
条件の適用手順
合格ラインは「60点以上」ですので、まずは各科目の合格者を確認します。
数学合格者:H003(90), H004(70), H005(95) 国語合格者:H001(90), H002(70), H003(95), H005(60)
次に、氏名のワイルドカード指定「%」を整理します。「%子」は末尾が「子」、「子%」は先頭が「子」、「%子%」は「子」という文字を含んでいれば(前後が何文字でも)条件を満たします。
ア:国語合格かつ末尾「子」 対象:H001(佐藤花子)、H004(高橋春子) ※H004は国語が55点のため不合格。したがってH001のみ。人数は1名。 (注:表のデータに基づくと、佐藤花子、高橋春子、金子一郎、子安三郎のうち、国語合格かつ末尾が子なのはH001のみです)
イ:国語合格かつ先頭「子」 対象:H005(子安三郎) 国語合格者の中で、氏名が「子」で始まるのはH005のみです。人数は1名。
ウ:数学・国語ともに合格 対象:H003(数学90・国語95)、H005(数学95・国語60) 両方合格しているのはこの2名です。人数は2名。
エ:数学合格かつ「子」を含む 対象:数学合格者はH003, H004, H005です。このうち名前に「子」が含まれるのは、H003(金子)、H004(高橋春子)、H005(子安)のすべてです。人数は3名。
これより、最も多いのはエの3名となります。
SQLにおけるパターンマッチングの理解
この問題の核心は、SQLにおけるWHERE句の条件指定と、LIKE演算子による文字列検索の理解です。
データベースを扱う現場では、特定の文字列を探し出したり、特定の範囲の数値でデータを絞り込んだりする作業が頻繁に行われます。今回の「%」記号はSQL標準で利用されるワイルドカードであり、前方一致、後方一致、部分一致を制御するために使われます。
- 前方一致:LIKE '子%' は「子」で始まる文字列
- 後方一致:LIKE '%子' は「子」で終わる文字列
- 部分一致:LIKE '%子%' は「子」が含まれる文字列
これらの記述法は、Excelのフィルタ機能や検索機能、あるいはプログラミングにおける正規表現の基礎概念にも通じる非常に汎用的な知識です。
業務現場での活用
この知識は、顧客名簿から特定の条件の人物を抽出したり、商品コードの規則性から特定のカテゴリーの商品を絞り込んだりする実務に直結します。
例えば、社内の売上システムで「2023年度」のデータだけを抽出したい場合に、「2023%」というパターンを使えば、日付形式のデータから効率的に期間を絞り込むことができます。システム開発やデータ分析の現場では、データが膨大であるほど、こうした効率的な検索条件の指定がレスポンスの速さや作業の正確さに直結します。ITパスポート試験では、こうした「システムがどのようにデータを検索しているか」という基礎的なロジックを理解しているかを問うています。