ウィンドウ関数は現在の問い合わせ行に関連した行集合に渡っての計算処理機能を提供します。この機能の手引きは項3.5を参照してください。
組み込みウィンドウ関数は表9-44に一覧されています。これらの関数は必ずウィンドウ関数構文で呼び出されなければなりません。つまり、OVER句が必要です。
これら関数に加え、どんな組み込み、またはユーザ定義の集約関数もウィンドウ関数として使用できます(組み込み集約関数一覧は項9.18を参照)。集約関数は、呼び出しの後OVER句が続いた場合のみウィンドウ関数として動作します。それ以外、通常の集約関数として動作します。
表 9-44. 汎用ウィンドウ関数
表9-44に列挙された関数はすべて、対応するウィンドウ定義のORDER BY句で指定されるソート順に依存します。 ORDER BY順で重複する行はピアと呼ばれます。 4つの順位付け関数は、任意の2つのピア間で同じ答えになるように定義されています。
first_value
、last_value
、nth_value
関数は"ウィンドウフレーム"内の行のみを考慮することに注意してください。
デフォルトで、ウィンドウフレームにはパーティションの先頭から現在の行の最終ピアまでの行が含まれます。
これはnth_value
、特にlast_value
では有用ではない結果を得ることになりがちです。
OVER句にROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWINGを加えることでパーティション全体をフレームとするようにフレームを再定義することができます。
詳細については項4.2.8を参照してください。
集約関数をウィンドウ関数として使用する場合、現在の行のウィンドウフレーム内の行に渡って集約処理を行います。 パーティション全体に渡る集約処理を行うためには、ORDER BYを省略するかROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWINGを使用してください。 ORDER BYを付けた集約、および、デフォルトのウィンドウフレーム定義では、"中間和"のような動作を行います。 これが望まれる場合もあれば、望まれない場合もあります。
注意: SQL標準は、
lead
、lag
、first_value
、last_value
、およびnth_value
に対しRESPECT NULLS、またはIGNORE NULLSオプションを定義します。これはPostgreSQLに実装されていません。動作は常に標準のデフォルトと同一です。つまり、RESPECT NULLSです。同様にして、標準のnth_value
に対するFROM FIRST、またはFROM LASTオプションは実装されていません。デフォルトのFROM FIRST動作のみに対応しています。(ORDER BY順序付けを逆に行うことで、FROM LASTの結果を得ることができます。)