반응형
문제
Weather Observation Station 20 | HackerRank
Station에서 북위도(LAT_N)의 중앙값을 소숫점 4자리수까지 반올림하여 출력합니다.
풀이
중앙값은 주어진 수를 크기순으로 정렬했을 때 가장 가운데에 있는 값입니다.
표본의 개수가 짝수여서 중앙값이 두 개가 될 경우는 두 수의 평균을 구합니다.
표본의 개수(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
;
결과
반응형
'SQL' 카테고리의 다른 글
[프로그래머스] SQL 고득점 Kit : JOIN 풀이 (Oracle) (0) | 2021.03.31 |
---|---|
[HackerRank] Print Prime Number 풀이 (Oracle) (0) | 2021.03.18 |
[HackerRank] Binary Tree Nodes 풀이 (Oracle) (0) | 2021.03.16 |
[HackerRank] Interviews 풀이 (Oracle) (0) | 2021.03.10 |
[HackerRank] Occupations 풀이 (Oracle) (0) | 2021.03.08 |
[HackerRank] 15 Days of Learning SQL 풀이 (Oracle) (0) | 2021.02.27 |
[HackerRank] Weather Observation Station 5 풀이 (Oracle) (0) | 2021.02.26 |
댓글