본문 바로가기
문제풀이/SQL(My sql)

[문제풀이] Hacker Rank - Weather Observation Station 20

by kime2 2024. 6. 10.
출처
 

Weather Observation Station 20 | HackerRank

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

www.hackerrank.com

 

 

문제

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 decimal places 4. 

Input Format

 

문제에 대한 해석

LAT_N의 중간값을 4쨰자리까지 표현하라

중간값 > 수를 나열했을때 50%의 부분

풀이(MYSQL)

WITH tmp as (
    SELECT 
    lat_n ,
    PERCENT_RANK() OVER( order by lat_n ) as percent
    FROM STATION
    )
SELECT ROUND(lat_n,4) 
FROM tmp
WHERE percent = 0.5

 

풀이(ORACLE)

SELECT ROUND(MEDIAN(LAT_N),4)
FROM STATION

작동순서

💡SQL 실행 순서는 From -> Where -> Group by -> Having -> Select -> Order by ->결과반환

  1. WITH  절:
    1.  lat_n 와
    2. lat_n의 순서로 백분위수 순위를 계산하여 조회하여 percent 컬럼에 저장

  2. FROM 절 : 임시테이블에서 
  3. WHERE 절: percent 가 0.5인 경우 필터링 하여
  4. SELECT 절:  lat_n를 4째자리까지 반올림하여 조회

 

배운점

  • mysql에는 중간값 구하는 함수가 없다..
  • PERCENT_RANK() :함수는 행의 백분위수 순위를 계산하는 상대 순위 함수
  • > PERCENT_RANK() OVER (PARTITION BY 컬럼명 ORDER BY 컬럼명)
  • PERCENT_RANK()를 통해 해당 값이 상위 몇 %에 있는지 계산하여 0.5 지점을 찾는 다