令和5年度 秋期 データベーススペシャリスト試験 午前II 問9
テクノロジデータベース
この問題は2023(R5)秋 データベーススペシャリスト 午前IIに出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。
本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。
“成績”表から,クラスごとに得点の高い順に個人を順位付けした結果を求めるSQL文の,aに入れる字句はどれか。

図の説明テキスト
成績
| 氏名 | クラス | 得点 |
|---|---|---|
| 情報太郎 | A | 80 |
| 情報次郎 | A | 63 |
| 情報花子 | B | 70 |
| 情報桜子 | B | 92 |
| 情報三郎 | A | 78 |

図の説明テキスト
〔結果〕
| 氏名 | クラス | 得点 | 順位 |
|---|---|---|---|
| 情報太郎 | A | 80 | 1 |
| 情報三郎 | A | 78 | 2 |
| 情報次郎 | A | 63 | 3 |
| 情報桜子 | B | 92 | 1 |
| 情報花子 | B | 70 | 2 |

図の説明テキスト
〔SQL文〕
SELECT 氏名, クラス, 得点,
a () OVER (PARTITION BY クラス ORDER BY 得点 DESC) 順位
FROM 成績
解答・解説を読む
正解: 選択肢エ
クラスごとに得点の高い順に個人を順位付けするためには、SQLのウィンドウ関数である RANK を使用します。
OVER 句内で PARTITION BY クラス とすることでクラスごとのグループに分割し、ORDER BY 得点 DESC と指定することで得点の高い順(降順)に順位を付けることができます。
各選択肢の解説
ア (CUME_DIST): 誤り。値の累積分布(相対的な位置)を0から1の範囲で計算する関数であり、順位付けではありません。
イ (MAX): 誤り。指定された列の最大値を求める集約関数であり、個人の順位付けには使用できません。
ウ (PERCENT_RANK): 誤り。相対的な順位(パーセンタイル)を0から1の範囲で計算する関数であり、通常の順位付けには適していません。
エ (RANK): 正解。指定された順序に基づいて順位を割り当てる関数です。同順位がある場合は同じ順位を割り当て、次の順位をスキップします。