令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問9
テクノロジ/データベース“成績”表から,クラスごとに得点の高い順に個人を順位付けした結果を求める SQL 文の,a に入れる字句はどれか。 〔SQL 文〕 SELECT 氏名, クラス, 得点, a () OVER (PARTITION BY クラス ORDER BY 得点 DESC) 順位 FROM 成績

出典:令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問9
- アCUME_DIST
- イMAX
- ウPERCENT_RANK
- エRANK
正解:エ
解説
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 から始まる順位を付与します。