IPA過去問ドリル

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

テクノロジ/データベース

“成績”表から,クラスごとに得点の高い順に個人を順位付けした結果を求める SQL 文の,a に入れる字句はどれか。 〔SQL 文〕 SELECT 氏名, クラス, 得点,  a () OVER (PARTITION BY クラス ORDER BY 得点 DESC) 順位 FROM 成績

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

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

正解:エ

解説

OVER 句を伴うウィンドウ関数で順位を求めるものが RANK です。PARTITION BY クラスによってクラスごとに区切り,ORDER BY 得点 DESC で得点の高い順に並べたうえで 1 から始まる順位を付与します。結果表ではクラス A が 80 点→1 位,78 点→2 位,63 点→3 位,クラス B が 92 点→1 位,70 点→2 位となっており,まさに RANK() の出力です。

選択肢ごとの解説

  • 誤り。CUME_DIST は累積分布,すなわち 0 より大きく 1 以下の比率を返す関数で,1,2,3 といった整数順位にはなりません。
  • 誤り。MAX は区分内の最大値を返す集約関数で,各行に順位を付けるものではありません。
  • 誤り。PERCENT_RANK は相対順位を 0 以上 1 以下の比率で返す関数で,整数の順位は返しません。
  • 正しい。RANK() OVER (PARTITION BY … ORDER BY … DESC) は区分ごとに 1 から始まる順位を付与します。
データベーススペシャリストの過去問を演習モードで解く