DBデータベーススペシャリスト試験 午前Ⅱ

令和4年度秋期 データベーススペシャリスト 午前Ⅱ 問12

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

“社員”表から,男女それぞれの最年長社員を除く全ての社員を取り出すSQL文とするために,aに入れる字句はどれか。ここで,“社員”表の構造は次のとおりであり,実線の下線は主キーを表す。 社員(社員番号[主キー],社員名,性別,生年月日) SELECT 社員番号,社員名 FROM 社員 AS S1 WHERE 生年月日 >(a)

選択肢

  1. ア
    SELECT MIN(生年月日)FROM 社員 AS S2 GROUP BY S2.性別
  2. イ
    SELECT MIN(生年月日)FROM 社員 AS S2 WHERE S1.生年月日 > S2.生年月日 OR S1.性別 = S2.性別
  3. ウ
    SELECT MIN(生年月日)FROM 社員 AS S2 WHERE S1.性別 = S2.性別
  4. エ
    SELECT MIN(生年月日)FROM 社員 GROUP BY S2.性別
解き方のヒントを見る

SQL抽出条件と結果を整理する視点

SQLの抽出条件と結果を対応づけるときは、条件がどの行に適用され、複数の条件や値の扱いが結果の範囲にどう影響するかを、処理の段階ごとに落ち着いて確認します。表や列の役割も区別して見直します。

この問題で問われていること

確認する観点は、抽出条件を構成する各部分が、対象となる行や列のどの範囲に関わるかです。条件を一度に判断せず、適用対象と組合せを順に整理し、結果の特徴を照合します。

視点

条件を読む際は、対象となるデータの単位、条件同士の組み合わせ、結果に残る範囲を分けて整理します。各条件がどこに影響するかを確認し、全体の対応関係を見直しましょう。

確認ポイント

  • 条件ごとの対象範囲を区別する
  • 条件同士の組み合わせ方を整理する
  • 得られる結果の特徴と対応を確認する
正解と解説を見る

正解

ウ

解説

生年月日は日付が早いほど年長なので、各性別の最小の生年月日を基準にし、それより後の日付の社員を取り出す相関サブクエリを用いる。

理由

年長の社員ほど生年月日が早く、同じ性別の生年月日の最小値が最年長社員に対応する。その値より外側の社員の生年月日が後であれば、各性別の最年長社員を除いた社員となる。

比較

外側の社員ごとに、同じ性別の社員集合を内側の検索対象として指定する必要がある。さらに、内側の表には外側の表と区別できる別名を付け、相関条件で対応させる。

選択肢ア

これは不正解だよ。GROUP BYで性別ごとの最小生年月日を求めているが、外側の社員の性別と内側の結果が対応づけられていない。各外側行に対して適切な一つの値を比較する相関サブクエリにならず、設問の抽出条件を満たさない。

選択肢イ

これは不正解だよ。生年月日の比較条件と性別の一致条件をORで結んでいるため、同じ性別でない社員まで内側の検索対象に含まれる可能性がある。各性別の最年長社員を基準にする条件として、検索範囲が正しく限定されていない。

選択肢ウ(正解)

これは正解だよ。内側の表S2を外側の表S1と性別で対応づけ、その性別に属する社員の生年月日の最小値を求めている。外側の生年月日がその値より後である社員だけを選ぶため、男女それぞれの最年長社員を除外できる。

選択肢エ

これは不正解だよ。FROM句の表にS2という別名が付いていないのに、GROUP BYでS2.性別を参照している。また、外側のS1との相関条件もなく、性別ごとの最年長社員を外側の行に対応づけて除外する構造になっていない。

学習のポイント

相関サブクエリとMINによるグループ別の最年長判定を学ぶ。

出典:独立行政法人 情報処理推進機構(IPA)令和4年度秋期 データベーススペシャリスト試験 午前Ⅱ 問12(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針