본문 바로가기

Algorithm/MySQL

[해커랭크(HackerRank)] Weather Observation Station 20 (MySQL)

문제

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.

Input Format

The STATION table is described as follows:

where LAT_N is the northern latitude and LONG_W is the western longitude.

코드

select round(avg(lat_n),4)
from (select lat_n, row_number() over (order by lat_n) rn, count(1) over() + 1 cnt from station) as tmp
where tmp.rn between floor(cnt/2) and ceil(cnt/2)
group by tmp.rn
  1. 중위값은 데이터 세트의 상위 반과 하위 반을 구분하는 숫자
  2. 위도(LAT_N)의 중위값을 소수점 4자리까지 반올림하여 출력
  3. SQL은 MDEIAN() 함수가 있어서 MySQL도 있을 줄 알았는데 없었다 ^^ 직접 만들어야함!
  4. 중위값의 조건은 표본의 개수(n)가 홀수일 때 → (n+1)/2 번째 값, 짝수일 때 → (n/2, n/2+1)번째 값의 평균
  5. 아무리 해봐도 중위값 조건에서 막혀서 풀이법을 찾아봤다 ^^ 참고사이트
  6. 일주일 후에 한 번 더 풀어보기

출처

반응형