[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
ア
ODER BY 学生番号, 実施回
イ
PARTITION BY 学生番号 ODER BY 実施回
ウ
PARTITION BY 学生番号 ODER BY 得点 ASC
エ
PARTITION BY 学生番号 ODER BY 得点 DSEC
答え イ
【解説】
SQL文1から学生番号ごとの最も小さな実施回とその時の得点を表示する内容になっている。
これと同じ動作をSQL文2で実現するためにaに入るのは「PARTITION BY 学生番号 ODER BY 実施回」(イ)になる。
SELECT 学生番号, 実施回, 得点
FROM (SELECT 学生番号, 実施回, ROW_NUMBER()
OVER(PARTITION BY 学生番号 ODER BY 実施回) AS 番号 FROM 成績) R1
WHERE R1.番号 = 1