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を指定したときに戻されるエラー率の信頼水準を表します。

関連項目:

  • MEDIAN

  • 「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