[Oracle] MEDIAN 함수, 중앙값(중간값) 구하기
- 데이터베이스/오라클
- 2023. 11. 6.
오라클에서 조회된 데이터에서 중앙값(중간값)을 구하기 위해서는 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
날짜 형식도 수치값과 동일하게 중앙값을 구할 수 있다.