令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ試験 問9

過去問 午前Ⅱ試験過去問
アラフィフオヤジ
アラフィフオヤジ

令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ試験 問9を解いてみましょう。

テクノロジ系 >> データベース >> データ操作

問題

“成績”表から、クラスごとに得点の高い順に個人を順位付けした結果を求めるSQL文の、aに入れる字句はどれか。

成績

氏名クラス得点
情報太郎A80
情報次郎A63
情報花子B70
情報桜子B92
情報三郎A78

結果

氏名クラス得点順位
情報太郎A801
情報三郎A782
情報次郎A633
情報桜子B921
情報花子B702

〔SQL文〕
SELECT 氏名, クラス, 得点,
     a  () OVER (PARTITION BY クラス ORDER BY 得点 DESC) 順位
  FROM 成績

ア CUME_DIST

イ MAX

ウ PERCENT_RANK

エ RANK

解説

アラフィフオヤジ
アラフィフオヤジ

このSQL文でクラスごとに得点の高い順に個人を順位付けするためには、aにはRANKを使用します。したがって、正解は「」です。以下のようになります。

このSQL文は、各クラスで得点が高い順に学生を順位付けします。RANK()関数は、同じ得点を持つ学生には同じ順位を付け、次の得点はその数だけ順位が下がります。例えば、1位が2人いた場合、次の得点は3位になります。これはスポーツ競技などでよく見られる順位付けの方法です。他の選択肢(CUME_DISTMAXPERCENT_RANK)はこの問題には適していません。それぞれ異なる目的と計算方法を持っています。例えば、MAXは集合内の最大値を返し、CUME_DISTPERCENT_RANKは値の相対的な位置を計算します。これらは順位付けには使用されません。したがって、この問題に対する最適な解答は「エ」のRANKです。