応用情報技術者試験 午前

解説一覧 / 令和6年度 秋期 問30

解説を読む ↓

30令和6年度 秋期テクノロジ系

“成績”表に対して,SQL文1と同一の結果を得るために,SQL文2のaに入れる字句はどれか。 成績 学生番号 実施回 得点 S01    1   70 S01    7   80 S02    2   85 S02    5   82 S03    3   83 S03    9   78 S03    12   90 S04    6   100 〔SQL文1〕 SELECT R1.学生番号,R1.実施回,R1.得点 FROM 成績 R1  INNER JOIN   (SELECT 学生番号,MIN(実施回) AS 初回 FROM 成績    GROUP BY 学生番号) R2   ON R1.学生番号 = R2.学生番号   AND R1.実施回 = R2.初回 〔SQL文2〕 SELECT 学生番号,実施回,得点  FROM (SELECT 学生番号,実施回,得点,ROW_NUMBER() OVER ([a]) AS 番号    FROM 成績) R1  WHERE R1.番号 = 1

問題の図
図(問題冊子 p.17 より)— クリックで原寸

正解はイ

解説 本サイト独自(IPA公表のものではありません)

 SQL文1は,学生番号ごとに実施回の最小値を求め,その実施回の行を取り出す。学生番号ごとに行を区切り,実施回の順に番号を付ければ,番号が1の行は各学生の初回になるので,イが同一の結果を得る。

  •  PARTITION BYがないので,学生番号ごとではなく表全体で連続して番号を付ける。その後に番号が1の行だけを選ぶと,各学生の初回ではなく,全体で一つの行しか残らない。
  •  実施回ではなく得点の昇順で番号を付けるため,各学生の最低得点の行を選んでしまう。例えばS02では初回の実施回2ではなく,得点82の実施回5が選ばれる。
  •  実施回ではなく得点の降順で番号を付けるため,各学生の最高得点の行を選んでしまう。例えばS03では初回の実施回3ではなく,得点90の実施回12が選ばれる。
この解説は間違っています

 ログインは不要です

この解説は,別のモデルによるレビューを受けています。

出典:令和6年度 秋期 応用情報技術者試験 午前 問30

自分で解いてから答え合わせをするなら 問題バンク — 解説は解答後に表示されます。