応用情報技術者試験 応用情報技術者試験 令和6年度秋期 午前30: “成績”表に対して,SQL文1と同一の結果を得るために,SQL文2のaに入れる字句はどれか。 成績 〔SQL文1〕 SELECT R1.学生番号, R1.実施回

応用情報技術者試験 令和6年度秋期 午前
Q 3030 / 80
“成績”表に対して,SQL文1と同一の結果を得るために,SQL文2のaに入れる字句はどれか。 成績
学生番号実施回得点
S01170
S01780
S02285
S02582
S03383
S03978
S031290
S046100
〔SQL文1〕 SELECT R1.学生番号, R1.実施回, R1.得点 FROM 成績 R1 INNER JOIN (SELECT 学生番号, MIN(実施回) AS 初回 FROM 成績 学生番号) R2 ON R1.学生番号 = R2.学生番号 AND R1.実施回 = R2.初回 〔SQL文2〕 SELECT 学生番号, 実施回, 得点 FROM (SELECT 学生番号, 実施回, 得点, ROW_NUMBER() OVER ( a ) AS 番号 FROM 成績) R1 WHERE R1.番号 = 1
この問の正解率:59.72%(653件)

解説

応用情報技術者試験 令和6年度秋期 午前 問30「“成績”表に対して,SQL文1と同一の結果を得るために,SQL文2のaに入れる字…」の正解と解説です。応用情報技術者試験の「テクノロジ系」分野の過去問で、これまでの受験者の正答率は約60%です。

正解

. PARTITION BY 学生番号 ORDER BY 実施回

正答率 59.7%(653人中 390人が正解)

問題の解説

SQL文1は、学生ごとに実施回が最小(初回)の行を取り出す問合せである。SQL文2はこれをウィンドウ関数 ROW_NUMBER() で書き換えるもので、学生番号ごとにグループ分けし(PARTITION BY 学生番号)、その中で実施回の昇順に並べて(ORDER BY 実施回)連番を振り、番号=1(=各学生で実施回が最小の行)を取り出せば同じ結果になる。よって a には PARTITION BY 学生番号 ORDER BY 実施回 が入り、正解はイである。

選択肢ごとの解説

  • PARTITION BY がないと学生ごとに区切られず表全体で連番が振られてしまい、各学生の初回を取り出せないため誤りである。
  • 学生番号でグループ分けし実施回の昇順で連番を振れば番号=1 が各学生の初回(実施回最小)の行となり、SQL文1と同一の結果になるため正解である。
  • 得点の昇順で並べると番号=1 は各学生の最低得点の行になり、初回(実施回最小)の行とは一致しないため誤りである。
  • 得点の降順で並べると番号=1 は各学生の最高得点の行になり、初回(実施回最小)の行とは一致しないため誤りである。

応用情報技術者試験 令和6年度秋期 午前 の過去問一覧に戻る・問30

応用情報技術者試験 の iOS アプリ版

アプリ版なら、よりスムーズに動作し、
スワイプで問題遷移ができます。

応用情報技術者試験 合格.dev を App Store でダウンロード