문제
https://www.hackerrank.com/challenges/weather-observation-station-20/problem?isFullScreen=true
목표/풀이
A 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
'코딩 테스트 연습' 카테고리의 다른 글
| SQL (다중 JOIN) - Top Competitors (0) | 2026.01.02 |
|---|---|
| SQL (계층쿼리, INNER JOIN) - New Companies (0) | 2025.12.31 |
| SQL (CONCAT, ORDER BY) - The PADS (0) | 2025.12.29 |
| SQL (재귀 쿼리, LEFT JOIN, LAG, COALESCE ) - 이틀치 누적 출고량 시뮬레이션 (0) | 2025.12.22 |
| SQL (RANK(), 상위 1%) - 사용자의 송금기록으로 상위 1% 찾기 (0) | 2025.12.17 |