본문 바로가기

Study/SQL

MySQL | HackerRank | Weather Observation Station 20

Problem

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.

Input Format

The STATION table is described as follows:

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

 

Solve

  • Oracle 의 경우, 중위값을 구할 때 median() 함수로 쉽게 해당 값을 구할 수 있다.
  • MySQL은 median() 함수를 제공하지 않는다.

아래는 나의 문제풀이

select round(lat_n,4)
from(
    select lat_n
     , rank() over(order by lat_n desc) as rowIndex
    from station
    ) a
where a.rowIndex = (select round(count(*)/2) from station)
limit 1

 

이외에도 여러가지 방법이 있는데,

  1. percent_rank() over(partirion by lat_n) 을 이용, 해당 값이 0.5가 나오는 row를 조건으로 두어 추출하는 방식
  2. set @var = ~~ 와 같이 쓰임새에 맞게 변수를 선언하여, 쿼리에서 해당 변수를 활용하는 방식

등이 있었다.

 

2번과 같은 문제풀이는 

set @mid = (select round(count(*)/2) from station);


select round(lat_n,4)
from(
    select LAT_N
     , row_number() over(order by LAT_N DESC) as rowIndex
    from station
    ) a
where a.rowIndex = mid
limit 1;

위 코드 처럼 진행하고자 했지만, 변수 이름들끼리 충돌이 있는건지, set 이 채점이 안되는 건지,, 자꾸 오류가 나서 이 전의 문제 풀이 방식으로 진행하여 완료하였다!

 


 

출처

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

 

타 문제 풀이 방법 1. 

https://jaaamj.tistory.com/148

 

[Oracle VS Mysql] 중앙값(median) 구하기

해커랭크에서 SQL 관련 문제를 풀면서 알게된 부분을 정리합니다. 다음 문제는 LAT_N 의 중앙값을 구한 후 반올림을 하는 문제이다. 나는 당연히 Median을 사용해서 풀었는데 자꾸 틀렸다고 해서 찾

jaaamj.tistory.com

타 문제 풀이 방법 2.

https://roomedia.tistory.com/entry/HackerRank-MySQL-%EC%A4%91%EC%95%99%EA%B0%92-Median-%EA%B5%AC%ED%95%98%EA%B8%B0

 

[HackerRank] MySQL 중앙값, Median 구하기

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 o

roomedia.tistory.com

 

'Study > SQL' 카테고리의 다른 글

MySQL | HackerRank | Top Competitors  (0) 2023.01.31
MySQL | HackerRank | The Report  (0) 2023.01.30
MySQL | HackerRank | The PADS  (0) 2023.01.27
MySQL | HackerRank | New Companies  (1) 2022.11.16
MySQL | HackerRank | Binary Tree Nodes  (0) 2022.11.15