Oracle Database
統計関数
サーチ…
一連の値の中央値の計算
Oracle 10g以降のMEDIAN機能は、使いやすい集約関数です。
SELECT MEDIAN(SAL)
FROM EMP
値の中央値を返します
DATETIME
値でも動作します。
MEDIANの結果は、最初に行を並べ替えることによって計算されます。グループ内の行数としてNを使用すると、Oracleは式RN =(1 +(0.5 *(N-1))を使用して対象行番号(RN)を計算します。行番号CRN = CEILING(RN)およびFRN = FLOOR(RN)の行からの値の間の補間。
Oracle 9i以降では、 PERIENLE_CONTを使用することができます。これは、MEDIAN関数と同じ働きを持ち、パーセンタイル値のデフォルトは0.5です
SELECT PERCENTILE_CONT(.5) WITHIN GROUP(order by SAL)
FROM EMP
分散
差異は、セット番号がその平均からどのくらい広がっているかを測定します。実用的な観点から、それはその平均(中心)から2乗された距離であり、より遠くになるほどその数は大きくなる。
次の例は、給与値の分散を返します
SELECT name, salary, VARIANCE(salary) "Variance"
FROM employees
STDDEV
STDDEVは、exprのサンプル標準偏差、つまり一連の数値を返します。集約関数と分析関数の両方として使用できます。 STDDEV_SAMPは、1行の入力データしか持たない場合はSTDDEVがゼロを返し、STDDEV_SAMPはNULLを戻す点でSTDDEV_SAMPとは異なります。
Oracle Databaseでは、標準偏差がVARIANCE集計関数用に定義された分散の平方根として計算されます。
この関数は、任意の数値データ型または暗黙的に数値データ型に変換できる非数値データ型を引数としてとります。この関数は、引数の数値データ型と同じデータ型を返します。
DISTINCTを指定すると、analytic_clauseのquery_partition_clauseのみを指定できます。 order_by_clauseおよびwindowing_clauseは許可されていません。
次の例は、サンプルhr.employees表の給与の標準偏差を戻します。
hrはスキーマで、employeesはテーブル名です。
SELECT STDDEV(salary) "Deviation"
FROM employees;
Deviation
----------
3909.36575
次の例のクエリは、サンプルテーブルhr.employeesの部門80の給与の累積標準偏差をhire_dateで返します。
SELECT last_name, salary,
STDDEV(salary) OVER (ORDER BY hire_date) "StdDev"
FROM employees
WHERE department_id = 30;
LAST_NAME SALARY StdDev
------------------------- ---------- ----------
Raphaely 11000 0
Khoo 3100 5586.14357
Tobias 2800 4650.0896