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

問9

"成績"表から,クラスごとに得点の高い順に個人を順位付けした結果を求めるSQL文の,aに入れる字句はどれか。
09.png/image-size:523×182
〔SQL文〕
SELECT 氏名,クラス,得点,
 a() OVER (PARTITION BY クラス ORDER BY 得点 DESC) 順位
 FROM 成績
  • CUME_DIST
  • MAX
  • PERCENT_RANK
  • RANK

分類

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

正解

解説

OVER句とPARTITION BY句の組合せにより実現される構文は、ウィンドウ関数と呼ばれます。ウィンドウ関数は、テーブル内の行の集合を定義し、それを関数の入力値とする機能です。GROUP BY句と異なり行の集約はしません。

OVER句によりウィンドウ関数を宣言し、PARTITION BY句によりテーブルの分割方法を指定します。設問ではPARTITION BY クラスと指定されているため、成績表がクラスごとのパーテンションに分割されます。そしてORDER BY 得点 DESCにより、パーテンションごとに得点の降順で整列が行われます。
09_1.png/image-size:204×148
aに入るのはパーテンションごとに適用する関数であり、それぞれ次の用途で使用します。なお、CUME_DIST、PERCENT_RANK、RANKの3つはウィンドウ関数専用の関数です。
  • CUME_DIST 各行のパーセンタイル値を0~1で出力
  • MAX パーテンション内の最大値を出力
  • PERCENT_RANK 各行の相対的な順位を0~1の値で出力
  • RANK 各行に連番の順位を1、2、3、…で割り振る
結果表の順位列は、1、2、3というように整列後の行に対して上から順に連番の順位が付けられているため、RANK関数が入ると判断できます。
  • CUME_DISTを使用した場合、上から順に0.333333、0.6666666、1、0.5、1と出力されます。
  • 引数で集計対象列が指定されていないので、構文エラーとなります。
  • PERCENT_RANKを使用した場合、上から順に0、0.5、1、0、1と出力されます。
  • 正しい。RANKはパーテンション内の行に上から連番の順位を割り振る関数です。
© 2016-2024 データベーススペシャリストドットコム All Rights Reserved.

Pagetop