CAFE

SQL Query Tips

중앙값(median) 계산하기

작성자원쿼리맨|작성시간14.03.05|조회수3,640 목록 댓글 0

통계학에서 등장하는 중앙값(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


테이블의 레코드 수와 값을 바꿔가면서 결과를 확인하자.


다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼