APPROX_MEDIAN
目的
APPROX_MEDIANは、連続分散モデルを想定する近似逆分散ファンクションです。数値または日時値を取得して、おおよその中央値、または値のソート後に中央値となる、おおよその補間された値を戻します。計算では、NULLは無視されます。
このファンクションは、MEDIANファンクションの代替機能として、正確な中央値または補間された値を戻します。APPROX_MEDIANは、正確な結果とわずかに誤差がありますが、MEDIANよりはるかに高速に大量のデータを処理します。
exprには、おおよその中央値を計算する式を指定します。exprで許容されるデータ型と、このファンクションの戻り値データ型は、DETERMINISTIC句で指定するアルゴリズムによって異なります。
DETERMINISTIC
この句を使用すると、このファンクションで使用するアルゴリズムのタイプを指定して、おおよその中央値を計算できます。
-
DETERMINISTICを指定すると、このファンクションによって、決定的なおおよその中央値が計算されます。この場合、exprは数値または数値に暗黙的に変換可能な値に評価される必要があります。また、その引数の数値データ型と同じデータ型を戻します。 -
DETERMINSTICを指定しないと、このファンクションによって、非決定的なおおよその中央値が計算されます。この場合、exprは、数値または日時値、あるいは数値または日時値に暗黙的に変換可能な値に評価される必要があります。また、その引数の数値または日時データ型と同じデータ型を戻します。
ERROR_RATE | CONFIDENCE
これらの句を使用すると、このファンクションによって計算される値の精度を決定できます。これらの句のいずれかを指定すると、exprのおおよその中央値が戻されるかわりに、次のいずれかの値を表す0から1までの10進値(それらの値を含む)が戻されます。
-
ERROR_RATEを指定すると、戻り値は、exprのおおよその中央値の計算におけるエラー率を表します。 -
CONFIDENCEを指定すると、戻り値は、ERROR_RATEを指定したときに戻されるエラー率の信頼水準を表します。
関連項目:
-
「APPROX_PERCENTILE」を参照してください。これは、指定されたパーセンタイルに対して、そのパーセンタイルに一致するように補間されたおおよその値を戻します。
APPROX_MEDIANは、パーセンタイル値が0.5に指定される特別なAPPROX_PERCENTILEです。
例
次の問合せは、hr.employees表内の部門ごとに、決定的な給与のおおよその中央値を戻します。
SELECT department_id "Department",
APPROX_MEDIAN(salary DETERMINISTIC) "Median Salary"
FROM employees
GROUP BY department_id
ORDER BY department_id;
Department Median Salary
---------- -------------
10 4400
20 6000
30 2765
40 6500
50 3100
60 4800
70 10000
80 9003
90 17000
100 7739
110 8300
7000次の問合せは、前の問合せによって戻された給与のおおよその中央値におけるエラー率を戻します。
SELECT department_id "Department",
APPROX_MEDIAN(salary DETERMINISTIC, 'ERROR_RATE') "Error Rate"
FROM employees
GROUP BY department_id
ORDER BY department_id;
Department Error Rate
---------- ----------
10 .002718282
20 .021746255
30 .021746255
40 .002718282
50 .019027973
60 .019027973
70 .002718282
80 .021746255
90 .021746255
100 .019027973
110 .019027973
.002718282次の問合せは、前の問合せによって戻されたエラー率について信頼水準を戻します。
SELECT department_id "Department",
APPROX_MEDIAN(salary DETERMINISTIC, 'CONFIDENCE') "Confidence Level"
FROM employees
GROUP BY department_id
ORDER BY department_id;
Department Confidence Level
---------- ----------------
10 .997281718
20 .999660215
30 .999660215
40 .997281718
50 .999611674
60 .999611674
70 .997281718
80 .999660215
90 .999660215
100 .999611674
110 .999611674
.997281718次の問合せは、hr.employees表内の部門ごとに、非決定的な雇用開始日のおおよその中央値を戻します。
SELECT department_id "Department",
APPROX_MEDIAN(hire_date) "Median Hire Date"
FROM employees
GROUP BY department_id
ORDER BY department_id;
Department Median Hire Date
---------- ----------------
10 17-SEP-03
20 17-FEB-04
30 24-JUL-05
40 07-JUN-02
50 15-MAR-06
60 05-FEB-06
70 07-JUN-02
80 23-MAR-06
90 17-JUN-03
100 28-SEP-05
110 07-JUN-02
24-MAY-07