본문 바로가기
SQL/SQL test

[HackerRank] Weather Observation Station 20(중앙값)

by ISLA! 2024. 1. 15.

문제

STATION 테이블에서 LAT_N 컬럼의 중앙값을 구하고, 그 값을 소수점 4자리까지 반올림하여 나타내기

포인트 👉 mySQL에는 중앙값을 구하는 MEDIUM() 함수가 없다. 이를 참고하여 풀어보자
(MEDIUM 함수는 오라클에 있음!)

 

 


풀이

PERCENT_RANK()
- SQL에서 사용되는 윈도우 함수 중 하나로, 정렬된 결과 집합에서 각 행의 백분위 순위를 계산하는 데 사용한다
- 0과 1 사이의 값을 반환하며, 이 값은 주어진 행이 정렬된 순서에서 어느 위치에 있는지를 나타낸다
- 0은 가장 낮은 값이고 1은 가장 높은 값

👉 예를 들어, PERCENT_RANK 가 0.2인 행은 정렬된 결과에서 하위 20%에 위치하고, 0.8인 행은 상위 80%에 위치

 

  • LAT_N을 내림차순 정렬하여 PERCENT_RANK 함수를 적용
  • 해당 컬럼이 포함된 서브쿼리를 기반으로 percent가 0.5인 중앙값을 where 절에 조건으로 걸어준다
SELECT ROUND(LAT_N, 4)
FROM (SELECT LAT_N, PERCENT_RANK() OVER(ORDER BY LAT_N ASC) as PERCENT
     FROM STATION) A
WHERE PERCENT = 0.5;

 

결과

728x90