2.15.1 ウィンドウ関数の形式と規則
(1) 機能
ウィンドウ関数に関連づけられたウィンドウ指定のウィンドウ枠を対象にして,結果を求める関数です。ウィンドウ関数の機能を,次の表に示します。
ウィンドウ枠には,行の集合のどの部分を集計対象とするかを指定します。ウィンドウ指定として()だけをサポートしているバージョンでは,ウィンドウ枠はWHERE句,又はFROM句の結果として導出される表のすべての範囲を示します。
ウィンドウ関数の種別 |
内容 |
---|---|
ウィンドウ枠に対する入力行数を求める。 |
(2) 形式
ウィンドウ関数::=COUNT(*) OVER ウィンドウ指定 ウィンドウ指定::=()
(3) オペランド
ウィンドウ関数についての規則を示します。
-
ウィンドウ関数は,選択式中に指定できます。
-
ウィンドウ関数COUNT(*) OVER()の結果のデータ型はINTEGER型になります。
-
計算途中でオーバフローが発生した場合はエラーになります。ただし,オーバフローエラー抑止が設定されている場合はエラーになりません。なお,オーバフローエラー抑止が設定されている場合の演算結果については,「オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。
-
ウィンドウ関数は,次に示す箇所には指定できません。
-
・INSERT文の問合せ式本体
-
・副問合せ
-
・導出表
-
・ビュー定義の導出問合せ式
-
・WITH句中の導出問合せ式
-
-
集合演算対象となる問合せ指定,導出問合せ式,及び問合せ式本体に指定できません。
-
ウィンドウ関数を指定した場合,GROUP BY句,及びHAVING句は指定できません。
-
選択式にウィンドウ関数を指定する場合,ウィンドウ関数以外の選択式を一つ以上指定してください。
-
スカラ演算中にウィンドウ関数は指定できません。
-
ウィンドウ関数を指定した場合,選択式に集合関数を指定できません。
(4) 留意事項
-
関数の入力が空集合の場合,集合関数COUNT(*)は0を出力しますが,ウィンドウ関数COUNT(*) OVER()を指定した場合は,検索結果行そのものが出力されません。
(5) 使用例
ウィンドウ関数の使用例を次に示します。ここで使用する表の構成は次のとおりです。
-
得点表(TOKUTEN)から得点(TEN)の高い順に,番号(ID),得点(TEN)及び総数を求める。
SELECT “ID”, “TEN”, COUNT(*) OVER() AS “SOUSU” FROM “TOKUTEN” ORDER BY “TEN” DESC