본문 바로가기
SQL

[HackerRank] Weather Observation Station 20 풀이 (Oracle)

by 유림유림 2021. 3. 15.
반응형

문제

Weather Observation Station 20 | HackerRank

 

Weather Observation Station 20 | HackerRank

Query the median of Northern Latitudes in STATION and round to 4 decimal places.

www.hackerrank.com

Station에서 북위도(LAT_N)의 중앙값을 소숫점 4자리수까지 반올림하여 출력합니다.

Station 테이블 정보

풀이

중앙값은 주어진 수를 크기순으로 정렬했을 때 가장 가운데에 있는 값입니다.

표본의 개수가 짝수여서 중앙값이 두 개가 될 경우는 두 수의 평균을 구합니다.

표본의 개수(n)가 홀수 일 때 → (n + 1) / 2 번째 값
표본의 개수(n)가 짝수 일 때 → n / 2, n / 2 + 1 번째 값의 평균

이를 SQL로 표현하면 아래와 같습니다.

SELECT ROUND(AVG(LAT_N), 4) MEDIAN
  FROM (SELECT LAT_N
             , ROW_NUMBER() OVER(ORDER BY LAT_N) RN
             , COUNT(1) OVER() + 1 CNT
          FROM STATION
       )
 WHERE RN BETWEEN FLOOR(CNT / 2) AND CEIL(CNT / 2)
;

Oracle 10g 이상 버전에서 지원하는 MEDIAN 함수를 이용하면 중앙값을 간단하게 구할 수 있습니다.

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

 

결과

반응형

댓글