イが正解となるのは、SQLにおけるウィンドウ関数「ROW_NUMBER()」の構文と機能に基づきます。ROW_NUMBER()は、OVER句で指定されたパーティション(区切り)内で、ORDER BY句で指定された順序に従って連番を振る関数です。問題文で、SQL文1とSQL文2が同一の結果を得るためには、SQL文2のウィンドウ関数が、SQL文1で暗黙的に行われているであろう「学生番号」でグループ化し、そのグループ内で「実施回」の順に連番を振る処理を再現する必要があります。選択肢イの「PARTITION BY 学生番号 ORDER BY 実施回」は、まさにこの「学生番号」ごとのパーティション分けと「実施回」による順序付けを行うため、SQL文1と同等の結果を生み出します。
読み込み中...