問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

- アORDER BY 学生番号,実施回
- イPARTITION BY 学生番号 ORDER BY 実施回
- ウPARTITION BY 学生番号 ORDER BY 得点 ASC
- エPARTITION BY 学生番号 ORDER BY 得点 DESC
正解はイ
解説 本サイト独自(IPA公表のものではありません)
イ SQL文1は,学生番号ごとに実施回の最小値を求め,その実施回の行を取り出す。学生番号ごとに行を区切り,実施回の順に番号を付ければ,番号が1の行は各学生の初回になるので,イが同一の結果を得る。
- ア PARTITION BYがないので,学生番号ごとではなく表全体で連続して番号を付ける。その後に番号が1の行だけを選ぶと,各学生の初回ではなく,全体で一つの行しか残らない。
- ウ 実施回ではなく得点の昇順で番号を付けるため,各学生の最低得点の行を選んでしまう。例えばS02では初回の実施回2ではなく,得点82の実施回5が選ばれる。
- エ 実施回ではなく得点の降順で番号を付けるため,各学生の最高得点の行を選んでしまう。例えばS03では初回の実施回3ではなく,得点90の実施回12が選ばれる。
この解説は間違っています
この解説は,別のモデルによるレビューを受けています。
出典:令和6年度 秋期 応用情報技術者試験 午前 問30