본문 바로가기
SQL

[Oracle VS Mysql] 중앙값(median) 구하기

by rubyda 2021. 3. 23.
728x90

해커랭크

 

 

해커랭크에서 SQL 관련 문제를 풀면서 알게된 부분을 정리합니다.

 

https://www.hackerrank.com/dashboard

 

다음 문제는 LAT_N 의 중앙값을 구한 후 반올림을 하는 문제이다. 나는 당연히 Median을 사용해서 풀었는데 자꾸 틀렸다고 해서 찾아보니 Mysql에서는 Median 함수가 적용이 안된다고 한다. 언어를 Oracle로 설정하고 풀어보니 한번에 풀어졌다.

 

그래도 나중에 어떠한 언어를 사용할지 모르기 때문에 Mysql로도 문제를 풀어봤다.

 

먼저, Oracle로 풀어보자.

 

[Oracle] 중앙값 구하기

SELECT ROUND(MEDIAN(LAT_N,4)
FROM STATION;

오라클에서는 다음과 같이 간단하게 함수를 사용해서 구할 수 있다. 하지만 Mysql은 아니었다. ㅠㅠㅠ 참고를 해보니 다양하게 푸는 방법들이 있었고, 복잡도도 다양하게 있었다.

 

[Mysql] 중앙값 구하기

SELECT ROUND(LAT_N,4)
FROM(SELECT LAT_N, PERCENT_RANK() OVER (ORDER BY LAT_N) percent
     FROM STATION) a
WHERE percent = 0.5;

PERCENT_RANK() 함수는 특정값(수치)이 전체에서 몇퍼센트인지를 계산하여 알려주는 함수이다. 이 함수를 떠오르는 것이 포인트

 

그러고 나서 그 값이 0.5인 값을 구해주면 ?? 그 값이 바로 중앙값이 된다.

 

왜 이렇게 복잡하게 푸는건지 모르겠다. 아직 잘 모르겠지만 오라클이 더 간편해 보인다 ㅎㅎ