통계학에서 등장하는 중앙값(median)을 계산해보자.
(오라클 10g에서는 중앙값을 계산하는 median 이라는 함수를 제공한다.
여기서는 이 median 함수를 다른 함수를 가지고 구현해 본다.)
중앙값은 아래와 같이 정의된다.
데이타를 크기순으로 나열할 때 가운데 놓이는 값으로서,
데이타의 수가 n 이라 할 때,
n이 홀수이면 (n+1)/2 번째 값을,
n이 짝수이면 n/2 번째와 n/2+1 번째 값의 평균이 중앙값이 된다.
테이블이 t가 아래와 같이 주어질 때,
with t as (
select 4 val from dual union all
select 6 from dual union all
select 9 from dual union all
select 10 from dual union all
select 11 from dual union all
select 15 from dual)
val 값들의 중앙값을 계산하는 쿼리는 아래와 같다.
SELECT AVG (VAL) MEDIAN
FROM (SELECT VAL
, ROW_NUMBER () OVER (ORDER BY VAL) RN
, TRUNC (AVG (ROWNUM) OVER ()) LO
, CEIL (AVG (ROWNUM) OVER ()) HI
FROM T)
WHERE RN BETWEEN LO AND HI
테이블의 레코드 수와 값을 바꿔가면서 결과를 확인하자.
다음검색