オンライン分析処理 (OnLine Analytical Processing: OLAP) 関数は、 ウィンドウ で囲んだデータに対して列関数操作を実行します。 このウィンドウでは、行の区分化や、 区分内の行の配列や、 集約グループ を指定できます。 集約グループとは、 現在行からの相対位置によって、 計算に含める行集合を指定する機能です。 そのようなウィンドウを使って、 累積合計や移動平均などの操作を実行できます。
ウィンドウを指定して既存の列関数 (SUM や AVG など) を実行するほかに、 OLAP 関数では、 ランキング (RANK、DENSE_RANK) 操作を実行したり、 行の区分化や配列に基づいて行の番号付け (ROW_NUMBER) を行ったりすることができます。
以下の照会例では、部署 15 と 38 について、 給与の面から部署内における各従業員のランクを示し、 部署内の給与の累積合計を計算します。
SELECT NAME, DEPT, RANK () OVER (PARTITION BY DEPT ORDER BY SALARY DESC) AS RANK, SUM (SALARY) OVER (PARTITION BY DEPT ORDER BY SALARY DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS CUMULATIVE_SUM FROM STAFF WHERE DEPT IN (15,38) ORDER BY DEPT, RANK
このステートメントの結果は、次のとおりです。
NAME DEPT RANK CUMULATIVE_SUM ---------- --------- ---------- -------------------- Hanes 15 1 20659.80 Rothman 15 2 37162.63 Ngan 15 3 49670.83 Kermisch 15 4 61929.33 O'Brien 38 1 18006.00 Marenghi 38 2 35512.75 Quigley 38 3 52321.05 Naughton 38 4 65275.80 Abrahams 38 5 77285.55