令和6年度秋期 応用情報技術者試験 午前 問30
“成績”表に対して,SQL文1と同一の結果を得るために,SQL文2のaに入れる字句はどれか。

- ア ORDER BY 学生番号, 実施回
- イ PARTITION BY 学生番号 ORDER BY 実施回
- ウ PARTITION BY 学生番号 ORDER BY 得点 ASC
- エ PARTITION BY 学生番号 ORDER BY 得点 DESC
解答・解説を見る
正解:イ
AI解説
SQL文1と同じ結果(学生ごとに実施回の順番で連番を振るなど)をウィンドウ関数で得るには、PARTITION BY で学生番号ごとにグループ化してグループ内の連番をリセットし、ORDER BY 実施回でそのグループ内の順序を実施回の昇順にする必要がある。よってイが正しい。 ア: PARTITION BY を指定していないため、学生番号ごとに連番がリセットされず、全体を通した連番になってしまい、SQL文1とは異なる結果になる。 イ: PARTITION BY 学生番号でグループを学生ごとに分け、ORDER BY 実施回でグループ内を実施回順に並べる指定であり、これがSQL文1と同一の結果を与える。 ウ: ORDER BY を得点の昇順にしており、実施回の順序ではなく得点順に並び替えてしまうため、SQL文1とは異なる結果になる。 エ: ORDER BY を得点の降順にしており、実施回の順序ではなく得点順(高得点順)に並び替えてしまうため、SQL文1とは異なる結果になる。 💡 ウィンドウ関数は『PARTITION BY=グループ化(集計のリセット単位)』『ORDER BY=グループ内の並び順』という役割分担を意識すると整理しやすい。
出典:令和6年度 秋期 応用情報技術者試験 午前 問30 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。