ウィンドウ関数(OVER句)とは?
ウィンドウ関数(OVER句)とは、行をまとめずに、指定した範囲(ウィンドウ)の集計値や順位を各行に付加する関数。OVER句のPARTITION BYで区切り、ORDER BYで順序を与える。RANK、ROW_NUMBER、移動平均、累計など、従来は自己結合や副問い合わせで書いていた処理を簡潔に表せる。
応用情報技術者試験の過去問では1回出題されています。
うぃんどうかんすう
ウィンドウ関数(OVER句)の意味
行をまとめずに、指定した範囲(ウィンドウ)の集計値や順位を各行に付加する関数。OVER句のPARTITION BYで区切り、ORDER BYで順序を与える。RANK、ROW_NUMBER、移動平均、累計など、従来は自己結合や副問い合わせで書いていた処理を簡潔に表せる。
ウィンドウ関数(OVER句)の具体例
部署ごとの売上順位はRANK() OVER(PARTITION BY 部署 ORDER BY 売上 DESC)で得られる。累計はSUM(売上) OVER(ORDER BY 日付 ROWS UNBOUNDED PRECEDING)。GROUP BYと違って明細行が残るため、明細と集計を1つの結果として返せる。
ウィンドウ関数(OVER句)は試験でどう引っ掛けられる?
RANKは同順位の次を飛ばし、DENSE_RANKは飛ばさず、ROW_NUMBERは同値でも通し番号を振る。この3つの違いが定番の出題点。またウィンドウ関数はWHERE句には書けず、絞り込むなら副問い合わせで包む必要がある。
ウィンドウ関数(OVER句)と関連する用語
ウィンドウ関数(OVER句)が出た過去問
"成績"表に対して、SQL文1と同一の結果を得るために、SQL文2のaに入れる字句はどれか。 〔SQL文1〕 SELECT R1.学生番号, R1.実施回, R…
正解:PARTITION BY 学生番号 ORDER BY 実施回
要点:PARTITION BYで区切りORDER BYで並べた連番1がグループ内の先頭行
SQL文1は学生番号ごとに最小の実施回、つまり各学生の初回の行を取り出している。同じ結果をウィンドウ関数で得るには、学生番号ごとにグループを区切り(PARTITION BY 学生番号)、実施回の昇順に並べて(ORDER BY 実施回)連番を振り、番号が1の行を選べばよい。
出典:令和6年度 秋期 応用情報技術者試験 午前 問30(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。