MEDIAN
구문
MEDIAN(expr) [ OVER (query_partition_clause) ]
참고:
구문, 의미, 그리고 제한 사항에 대한 정보는 "Analytic Functions"에 대한 내용을 참조하세요.
목적
MEDIAN는 연속 분포 모델을 가정하는 역분포 함수입니다. 숫자나 날짜 시간 값을 가져와 값을 정렬한 후 가운데 값 또는 중간 값이 될 보간된 값을 반환합니다. 계산 시 널(null) 값은 무시됩니다.
이 함수는 어떤 숫자 데이터 유형이든 또는 숫자 데이터 유형으로 암시적으로 변환될 수 있는 어떤 비숫자 데이터 유형이든 인수로 사용할 수 있습니다. expr만 지정하면 함수는 인수의 숫자 데이터 유형과 동일한 데이터 유형을 반환합니다. OVER 절을 지정하면 Oracle Database는 가장 높은 숫자 우선순위를 갖는 인수를 결정하고, 나머지 인수를 해당 데이터 유형으로 암시적으로 변환한 후 해당 데이터 유형을 반환합니다.
참고:
- 암묵적 변환에 대한 자세한 내용은 표 2-8을 참조하시고, 숫자 우선순위에 대한 정보는 "Numeric Precedence"를(을) 참조하십시오.
- Oracle Database Globalization Support Guide의 부록 C는 INSTR 함수가 substring 인수를 string의 부분 문자열과 비교하는 데 사용하는 정렬(collation) 결정 규칙에 대한 정보를 제공합니다.
MEDIAN 함수의 결과는 먼저 행들을 정렬하여 계산됩니다. 그룹 내의 행 수를 N으로 사용할 때, Oracle은 관심 있는 행 번호(RN)를 다음의 공식을 사용하여 계산합니다: RN = (1 + (0.5*(N-1)). 집계 함수의 최종 결과는 행 번호 CRN = CEILING(RN) 및 FRN = FLOOR(RN)의 행들의 값 사이에서 선형 보간으로 계산됩니다.
최종 결과는 다음과 같습니다:
if (CRN = FRN = RN) then
(value of expression from row at RN)
else
(CRN - RN) * (value of expression for row at FRN) +
(RN - FRN) * (value of expression for row at CRN)
MEDIAN 함수는 분석 함수로 사용할 수 있습니다. OVER 절에서는 query_partition_clause만 지정할 수 있습니다. 각 행에 대해, 파티션 내의 값 집합 중 중간에 위치하는 값을 반환합니다.
이 함수를 다음 함수들과 비교해보세요:
- PERCENTILE_CONT: 선형 보간을 통해 특정 백분위수에 해당하는 값을 반환합니다. MEDIAN은 백분위수 값이 기본적으로 0.5인 PERCENTILE_CONT의 특수한 경우입니다.
- PERCENTILE_DISC: 보간 없이 주어진 백분위수에 해당하는 값을 찾는 데 유용합니다.
집계 예시
다음 쿼리는 hr.employees 테이블에서 각 부서의 중간 급여를 반환합니다:
SELECT department_id, MEDIAN(salary)
FROM employees
GROUP BY department_id
ORDER BY department_id;
DEPARTMENT_ID MEDIAN(SALARY)
------------- --------------
10 4400
20 9500
30 2850
40 6500
50 3100
60 4800
70 10000
80 8900
90 17000
100 8000
110 10154
7000
분석 예시
다음 쿼리는 hr.employees 테이블의 일부 부서에서 각 매니저의 중간 급여를 반환합니다:
SELECT manager_id, employee_id, salary,
MEDIAN(salary) OVER (PARTITION BY manager_id) "Median by Mgr"
FROM employees
WHERE department_id > 60
ORDER BY manager_id, employee_id;
MANAGER_ID EMPLOYEE_ID SALARY Median by Mgr
---------- ----------- ---------- -------------
100 101 17000 13500
100 102 17000 13500
100 145 14000 13500
100 146 13500 13500
100 147 12000 13500
100 148 11000 13500
100 149 10500 13500
101 108 12008 12008
101 204 10000 12008
101 205 12008 12008
108 109 9000 7800
108 110 8200 7800
108 111 7700 7800
108 112 7800 7800
108 113 6900 7800
145 150 10000 8500
145 151 9500 8500
145 152 9000 8500
. . .
출처: 오라클 레퍼런스
원문 링크: Oracle MEDIAN 함수 문서
'코딩 > 오라클 함수' 카테고리의 다른 글
[오라클 레퍼런스 함수] MOD - 나누기 후 나머지 반환 (0) | 2023.08.10 |
---|---|
[오라클 레퍼런스 함수] MIN - 최소값 반환 (0) | 2023.08.10 |
[오라클 레퍼런스 함수] MAX - 최대값 반환 (0) | 2023.08.09 |
[오라클 레퍼런스 함수] MAKE_REF - 테이블 및 뷰(view)의 행에 대한 참조 생성 (0) | 2023.08.09 |
[오라클 레퍼런스 함수] LTRIM - 문자열 왼쪽의 문자(또는 공백) 제거 (0) | 2023.08.09 |
댓글