본문 바로가기

[오라클 레퍼런스 함수] APPROX_MEDIAN - 대략적인 중앙값 계산

by ㅇㅍㅍ 2023. 7. 30.
[오라클 레퍼런스 함수] APPROX_MEDIAN - 대략적인 중앙값 계산
728x90

APPROX_MEDIAN

 

구문

APPROX_MEDIAN( expr [ DETERMINISTIC ] [, { 'ERROR_RATE' | 'CONFIDENCE' } ] )

 

목적

APPROX_MEDIAN은 연속적인 분포 모델을 가정하는 근사 역분포 함수입니다. 숫자 또는 날짜/시간 값을 취하고, 값을 정렬한 후 근사 중간값 또는 값들이 정렬된 경우의 보간된 중간값을 반환합니다. 이 계산에서는 NULL 값들은 무시됩니다.

이 함수는 MEDIAN 함수와 대체적인 기능을 제공합니다. MEDIAN 함수는 정확한 중간값이나 보간된 값을 반환하는 반면, APPROX_MEDIAN은 대량의 데이터를 처리할 때 MEDIAN에 비해 훨씬 빠른 속도로 동작하며, 정확한 결과와 거의 차이가 없습니다.

expr에는 대략적인 중앙값이 계산되는 표현식을 지정합니다. expr의 허용되는 데이터 유형 및 이 함수의 반환 값 데이터 유형은 DETERMINISTIC 절로 지정하는 알고리즘에 따라 달라집니다.

 

DETERMINISTIC

이 절을 사용하면 함수가 근사 중간값을 계산하는 데 사용하는 알고리즘 유형을 지정할 수 있습니다.

 

  • DETERMINISTIC을 지정하면 함수는 결정론적 근사 중간값을 계산합니다. 이 경우 expr은 숫자 값 또는 숫자 값으로 암시적으로 변환 가능한 값이어야 합니다. 함수는 인수의 숫자 데이터 유형과 동일한 데이터 유형을 반환합니다.
  • DETERMINISTIC을 생략하면 함수는 비결정론적 근사 중간값을 계산합니다. 이 경우 expr은 숫자 또는 날짜/시간 값이거나 숫자 또는 날짜/시간 값으로 암시적으로 변환 가능한 값이어야 합니다. 함수는 인수의 숫자 또는 날짜/시간 데이터 유형과 동일한 데이터 유형을 반환합니다.

ERROR_RATE | CONFIDENCE

이 절을 사용하면 함수로 계산된 값의 정확도를 결정할 수 있습니다. 이 중 하나의 절을 지정하면, expr의 근사 중간값 대신 0부터 1 사이의 십진수 값을 반환합니다.

 

  • 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

 


출처: 오라클 레퍼런스

원문 링크: Oracle APPROX_MEDIAN 함수 문서

 

반응형

댓글