過去問解きまくり研究所 ホーム

令和5年度 秋期 午前Ⅱ 問9

データ操作

ウィンドウ関数に関する問題

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

成績

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

〔結果〕

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

〔SQL文〕

SELECT 氏名, クラス, 得点,
    [ a ]() OVER (PARTITION BY クラス ORDER BY 得点 DESC) 順位
    FROM 成績
答えと解説を見る

✓ これが正解エRANK

解説

クラス内で得点の高い順に1、2、3と順位を付けるのは RANK です。

このSQL文は、PARTITION BY クラスでクラスごとに区切り、ORDER BY 得点 DESC で得点の高い順に並べたうえで、関数を各行に適用するウィンドウ関数の形です。結果の表を見ると、クラスAは80点が1、78点が2、63点が3、クラスBは92点が1、70点が2という整数の順位が付いています。並び順に従って1から順位を返すのは RANK 関数です。同じ得点が並んだ場合は同じ順位になり、その次の順位は人数分飛びます。見分ける軸は、結果の列に入っている値が順位の整数か、割合を表す小数か、最大値かです。結果の表の値を一つ選んで、各関数で計算するとどうなるかを当てはめると確実に区別できます。

ほかの選択肢はなぜ違うのか

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

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)