スケーラブルデータベースサーバ HiRDB Version 8 SQLリファレンス

[目次][索引][前へ][次へ]

2.15 ウィンドウ関数

<この節の構成>
(1) 機能
(2) 形式
(3) オペランド
(4) 留意事項
(5) 使用例

(1) 機能

ウィンドウ関数に関連づけられたウィンドウ指定のウィンドウ枠を対象にして,結果を求める関数です。ウィンドウ関数の機能を,次の表に示します。

ウィンドウ枠には,行の集合のどの部分を集計対象とするかを指定します。ウィンドウ指定として()だけをサポートしているバージョンでは,ウィンドウ枠はWHERE句,又はFROM句の結果として導出される表のすべての範囲を示します。

表2-27 ウィンドウ関数の機能

ウィンドウ関数の種別 内容
COUNT(*) ウィンドウ枠に対する入力行数を求める。

(2) 形式

 
 ウィンドウ関数::=COUNT(*)
           OVER ウィンドウ指定
 ウィンドウ指定::=()
 

(3) オペランド

ウィンドウ関数についての規則を示します。

  1. ウィンドウ関数は,選択式中に指定できます。選択式中に副問合せを指定した場合,スカラ副問合せの選択式以外には指定できません。
  2. ウィンドウ関数COUNT(*) OVER()の結果のデータ型はINTEGER型になります。
  3. 計算途中でオーバフローが発生した場合はエラーになります。ただし,オーバフローエラー抑止が設定されている場合はエラーになりません。なお,オーバフローエラー抑止が設定されている場合の演算結果については,「2.18 オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。
  4. ウィンドウ関数は,次に示す箇所には指定できません。
    • INSERT文の問合せ式本体
    • 副問合せ
    • 導出表
    • ビュー定義の導出問合せ式
    • WITH句中の導出問合せ式
  5. 集合演算対象となる問合せ指定,導出問合せ式,及び問合せ式本体に指定できません。
  6. ウィンドウ関数を指定した場合,GROUP BY句,及びHAVING句は指定できません。
  7. 選択式にウィンドウ関数を指定する場合,ウィンドウ関数以外の選択式を一つ以上指定してください。
  8. スカラ演算中にウィンドウ関数は指定できません。
  9. ウィンドウ関数を指定した場合,選択式に集合関数を指定できません。

(4) 留意事項

  1. ウィンドウ関数は,外部表を操作するSQL中に指定しても,常にHiRDBが評価します。
  2. ウィンドウ枠(WHERE句,又はFROM句の結果として導出される表の全範囲)が空集合の場合,集合関数COUNT(*)は0が返却されますが,ウィンドウ関数COUNT(*) OVER()は返却されません。

(5) 使用例

ウィンドウ関数の使用例を次に示します。ここで使用する表の構成は次のとおりです。

[図データ]

  1. 得点表(TOKUTEN)から得点(TEN)の高い順に,番号(ID),得点(TEN)及び総数を求める。
 
    SELECT "ID", "TEN", COUNT(*) OVER() AS "SOUSU" 
      FROM "TOKUTEN" ORDER BY "TEN" DESC

[図データ]