データベーススペシャリスト暗記無料で始める

窓関数とは?まどかんすう

窓関数とは、行をまとめずに、各行から見える範囲(ウィンドウ)を対象として集計や順位付けを行い、結果を元の行に列として付け足す関数。OVER句のPARTITION BYで範囲を区切り、ORDER BYで範囲内の順序を与える。GROUP BYと違って行数が減らない。

最終更新:2026-10-06

試験情報

データベーススペシャリスト試験の過去問では1問の解説で触れられています。

データベーススペシャリスト試験の頻出用語/午前II

別名:ウィンドウ関数、OVER句、RANK/ROW_NUMBER/DENSE_RANK

この語が出る過去問を解く →

背景

GROUP BYは行を潰してしまうため、明細と集計を同じ結果に並べたい要求——構成比、累計、部門内順位、前月との差——を書こうとすると、同じ表への自己結合や副問合せを何段も重ねることになっていた。読みにくいうえ表を何度も走査する。行を残したまま範囲付きの計算を付加する演算がSQL:2003で標準化され、この定型が1文で書けるようになった。

具体例

SUM(金額) OVER (PARTITION BY 会員番号 ORDER BY 受注日) で会員ごとの累計購入額を明細行に付ける。RANK() OVER (PARTITION BY 店舗コード ORDER BY 売上 DESC) なら店舗内の売上順位が各行に付く。

試験での引っ掛け

RANKは同順位の後で順位が飛び(1,1,3)、DENSE_RANKは飛ばず(1,1,2)、ROW_NUMBERは同値でも一意な連番を振る。またWHERE句では窓関数を使えない——評価がWHEREより後なので、絞り込むには副問合せで包む必要がある。

関連用語

出た過去問

解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。

この語が出る過去問を解く →

試験での特徴
  • 1問の解説で触れられる
  • 分野:午前II
  • RANKは同順位の後で順位が飛び(1,1,3)、DENSE_RANKは飛ばず(1,1,2)、ROW_NUMBERは同値でも一意な連番を振る。