[Oracle] MEDIAN 함수, 중앙값(중간값) 구하기

오라클에서 조회된 데이터에서 중앙값(중간값)을 구하기 위해서는 MEDIAN 함수를 사용한다. 데이터의 중앙값이라고 생각해서 평균(AVG) 함수와 유사하다고 생각할 수 있지만, AVG 함수는 데이터 값의 평균값이고 MEDIAN 함수는 조회된 데이터의 값을 크기로 정렬 후 데이터 행의 중앙값이다. MEDAN 함수는 수치값과 날짜 형식에 사용할 수 있다.

 

WITH temp AS (
    SELECT 1 num FROM dual UNION ALL
    SELECT 2 num FROM dual UNION ALL
    SELECT 3 num FROM dual
)

SELECT MEDIAN(num)
  FROM temp

 

 

위의 예제는 3개의 행이 조회되었고, 데이터 행의 중앙값은 2이다.

 

WITH temp AS (
    SELECT 1 num FROM dual UNION ALL
    SELECT 2 num FROM dual UNION ALL
    SELECT 3 num FROM dual UNION ALL
    SELECT 4 num FROM dual UNION ALL
    SELECT 5 num FROM dual UNION ALL
    SELECT 6 num FROM dual
)

SELECT MEDIAN(num)
  FROM temp

 

 

위의 예제는 6개의 데이터 행이 조회되었고, 가장 중앙의 행은 3, 4이며 이 값의 중앙값은 3.5이다.

 

WITH temp AS (
    SELECT 1 num FROM dual UNION ALL
    SELECT 1 num FROM dual UNION ALL
    SELECT 1 num FROM dual UNION ALL
    SELECT 2 num FROM dual UNION ALL
    SELECT 6 num FROM dual UNION ALL
    SELECT 6 num FROM dual
)

SELECT MEDIAN(num)
  FROM temp

 

 

위의 예제를 보면 데이터 값의 평균이 아니라 데이터 행의 중앙값이 표시되는 것을 확인할 수 있다.

 

WITH temp AS (
    SELECT TO_DATE('2023-11-01', 'yyyy-mm-dd') dte FROM dual UNION ALL
    SELECT TO_DATE('2023-11-02', 'yyyy-mm-dd') dte FROM dual UNION ALL
    SELECT TO_DATE('2023-11-03', 'yyyy-mm-dd') dte FROM dual UNION ALL
    SELECT TO_DATE('2023-11-04', 'yyyy-mm-dd') dte FROM dual UNION ALL
    SELECT TO_DATE('2023-11-05', 'yyyy-mm-dd') dte FROM dual UNION ALL
    SELECT TO_DATE('2023-11-06', 'yyyy-mm-dd') dte FROM dual
)

SELECT MEDIAN(dte) 
  FROM temp

 

 

날짜 형식도 수치값과 동일하게 중앙값을 구할 수 있다.

 

[Oracle] 평균 구하는 방법 (AVG 함수)

오라클에서 AVG 함수를 사용하면 평균을 쉽게 구할 수 있다. 그러나 NULL 값을 처리하지 않으면 평균 값에 오류가 발생할 수 있으니 주의해야 한다. SELECT AVG(sal) FROM emp 평균을 구할 컬럼의 값에 NULL

gent.tistory.com

 

댓글

Designed by JB FACTORY