코딩 테스트 연습

SQL (MySQL, Oracle 중앙값 구하기) - Weather Observation Station 20

baektree 2026. 1. 1. 14:24

문제

https://www.hackerrank.com/challenges/weather-observation-station-20/problem?isFullScreen=true

목표/풀이

median is defined as a number separating the higher half of a data set from the lower half. Query the median of the Northern Latitudes (LAT_N) from STATION and round your answer to 4  decimal places.

 

중앙값은 전체 데이터에서 상위 50%와 하위 50%로 나뉘는 숫자이다.

북위도의 중앙값을 구하고, 소수점 4자리까지 반올림해서 표현하라

 

코드

DBMS에 따라 중앙값을 구할 수 있는 함수가 다르다.

 

Oracle

  • Oracle은 간단하다. MEDIAN을 활용하면 중앙값을 쉽게 구할 수 있다.
SELECT ROUND(MEDIAN(LAT_N), 4)
FROM STATION;

 

MySQL

  • MySQL은 MEDIAN 함수가 없다. 그래서 PERCENT_RANK()를 활용해 볼 수 있다.
  • PERCENT_RANK()는 백분율 순위를 계산하는 윈도우 함수로 0.0에서 1.0 사이의 값을 반환한다.
  • 따라서 중앙값에 해당하는 값을 출력하기 위해 PERCENT_RANK() 가 0.5인 북위도 값을 출력하면 된다.
SELECT ROUND(LAT_N, 4)
FROM ( SELECT LAT_N, PERCENT_RANK () OVER (ORDER BY LAT_N) AS percent
       FROM STATION ) t
WHERE percent = 0.5