応用情報技術者試験 応用情報技術者試験 令和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.85%(655件)

解説

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

正解

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

正答率 59.8%(655人中 392人が正解)

問題の解説

SQL文1は、学生ごとに最小の実施回を求め、その行(初回の成績)を取り出す。SQL文2で同じ結果にするには、ROW_NUMBER で学生ごとに実施回の小さい順に番号を振り、番号 1 の行を選べばよい。そのために、PARTITION BY 学生番号 で学生ごとに区切り、ORDER BY 実施回 で昇順に並べる。

選択肢ごとの解説

  • アPARTITION BY がないので、番号が表全体の連番になり、番号 1 は先頭の 1 行だけである。学生ごとの初回の行は得られない。
  • イ正しい。学生ごとに区切り、実施回の昇順に番号を振るので、各学生の最小の実施回の行が番号 1 になり、SQL文1と同じ 4 行になる。
  • ウ学生ごとに得点の昇順で番号を振るので、選ばれるのは得点が最も低い行である。S02 は実施回 5(82 点)になり、初回の実施回 2 と異なる。
  • エ学生ごとに得点の降順で番号を振るので、選ばれるのは得点が最も高い行である。S01 は実施回 7(80 点)になり、初回の実施回 1 と異なる。

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

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

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

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