令和5年秋期試験問題 午前Ⅱ 問9
問9解説へ
"成績"表から,クラスごとに得点の高い順に個人を順位付けした結果を求めるSQL文の,aに入れる字句はどれか。〔SQL文〕
SELECT 氏名,クラス,得点,
a() OVER (PARTITION BY クラス ORDER BY 得点 DESC) 順位
FROM 成績
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により、パーテンションごとに得点の降順で整列が行われます。aに入るのはパーテンションごとに適用する関数であり、それぞれ次の用途で使用します。なお、CUME_DIST、PERCENT_RANK、RANKの3つはウィンドウ関数専用の関数です。
OVER句によりウィンドウ関数を宣言し、PARTITION BY句によりテーブルの分割方法を指定します。設問ではPARTITION BY クラスと指定されているため、成績表がクラスごとのパーテンションに分割されます。そしてORDER BY 得点 DESCにより、パーテンションごとに得点の降順で整列が行われます。aに入るのはパーテンションごとに適用する関数であり、それぞれ次の用途で使用します。なお、CUME_DIST、PERCENT_RANK、RANKの3つはウィンドウ関数専用の関数です。
- CUME_DIST 各行のパーセンタイル値を0~1で出力
- MAX パーテンション内の最大値を出力
- PERCENT_RANK 各行の相対的な順位を0~1の値で出力
- RANK 各行に連番の順位を1、2、3、…で割り振る
- CUME_DISTを使用した場合、上から順に0.333333、0.6666666、1、0.5、1と出力されます。
- 引数で集計対象列が指定されていないので、構文エラーとなります。
- PERCENT_RANKを使用した場合、上から順に0、0.5、1、0、1と出力されます。
- 正しい。RANKはパーテンション内の行に上から連番の順位を割り振る関数です。
広告