SQL 概説


OLAP 関数

オンライン分析処理 (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


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]