第 4 章 OLAP の使用
ウィンドウ集合関数の例 2 この例のクエリは、給与の額がそれぞれの部署の平 均給与よりも 1 標準偏差以上高い従業員を表す結果セットを返します。標準偏 差とは、そのデータが平均からどのぐらい離れているかを示す尺度です。
SELECT * FROM (SELECT emp_lname AS E_name, dept_id AS Dept, CAST(salary AS numeric(10,2) ) AS Sal, CAST(AVG(Sal) OVER(PARTITION BY dept_id) AS numeric(10, 2)) AS Average, CAST(STDDEV_POP(Sal) OVER(PARTITION BY dept_id) AS numeric(10,2)) AS STD_DEV
FROM employee
GROUP BY Dept, E_name, Sal) AS derived_table WHERE Sal> (Average+STD_DEV )
ORDER BY Dept, Sal, E_name;
このクエリの結果セットを次に示します。どの部署にも、給与の額が平均を大 きく上回っている従業員が 1 人以上いることがわかります。
Employee | Dept | Salary | Average | Std_Dev |
Lull | 100 | 87900.00 | 58736.28 | 16829.59 |
Sheffield | 100 | 87900.00 | 58736.28 | 16829.59 |
Scott | 100 | 96300.00 | 58736.28 | 16829.59 |
Sterling | 200 | 64900.00 | 48390.94 | 13869.59 |
Savarino | 200 | 72300.00 | 48390.94 | 13869.59 |
Kelly | 200 | 87500.00 | 48390.94 | 13869.59 |
Shea | 300 | 138948.00 | 59500.00 | 30752.39 |
Blaikie | 400 | 54900.00 | 43640.67 | 11194.02 |
Morris | 400 | 61300.00 | 43640.67 | 11194.02 |
Evans | 400 | 68940.00 | 43640.67 | 11194.02 |
Martinez | 500 | 55500.80 | 33752.20 | 9084.49 |
| 従業員 Scott の給与は 96,300.00 ドルで、所属部署の平均給与は 58,736.28 ドル |
| です。この部署の標準偏差は 16,829.00 なので、給与の額が 75,565.88 ドル |
| (58736.28 + 16829.60 = 75565.88) 未満ならば、平均の 1 標準偏差以内の範囲に |
| 収まります。Scott の給与 96,300.00 ドルは、この数字を大きく超えています。 |
統計集合関数 |
|
| ANSI SQL/OLAP 拡張機能には、数値データの統計的分析を行うための集合関 |
| 数がこの他にも数多く用意されています。これには、分散、標準偏差、相関、 |
| 直線回帰を計算するための関数も含まれます。 |
標準偏差と分散 | SQL/OLAP の一般的な関数の中には、STDDEV、STDDEV_POP、 |
| STDDEV_SAMP、VARIANCE、VAR_POP、VAR_SAMP のように、 |
| 1 つの引数を取る関数があります。 |
<SIMPLE WINDOW AGGREGATE FUNCTION TYPE> ::= <BASIC AGGREGATE FUNCTION TYPE>
STDDEV STDDEV_POP STDDEV_SAMP
VARIANCE VARIANCE_POP VARIANCE_SAMP
パフォーマンス&チューニング・ガイド | 81 |