본문 바로가기

코딩일기

SQL 코드카타 170 - Weather Observation Station 20

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

 

Weather Observation Station 20 | HackerRank

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

www.hackerrank.com

 

Field Type
ID NUMBER
CITY VARCHAR2(21)
STATE VARCHAR2(2)
LAT_N NUMBER
LONG_W NUMBER

 

STATION 테이블:

  • ID: 테이블의 고유 키
  • CITY : 도시의 이름
  • STATE : 주의 이름
  • LAT_N : 위도
  • LONG_W : 경도

중앙값(median)은 데이터 집합의 상위 절반과 하위 절반을 나누는 숫자로 정의됩니다. STATION 테이블에서 북위(LAT_N)의 중앙값을 쿼리하고, 답변을 소수점 4자리까지 반올림하세요.

 

select
    LAT_N,
    percent_rank() over (order by LAT_N) percent
from STATION

 

먼저 LAT_N에 대해서 전체에서 몇%에 해당하는 데이터인지를 구한다.

 

select round(LAT_N, 4)
from
(select
    LAT_N,
    percent_rank() over (order by LAT_N) percent
from STATION ) a
where percent = 0.5;

 

해당 데이터에서 LAT_N가 0.5(즉, 50%)에 해당하는 값 = 중앙값을 구하고 소수점 4자리까지 반올림을 해서 출력한다.

 

 mysql은 중앙값계산을 지원하는 내장함수가 없기때문에 percent_rank()라는 함수를 사용해서  원하는 데이터가 어느정도 구간에 위치하는지를 계산해서 중앙값을 구했다.