본문 바로가기

Today I Learned

[SQL] Oracle에 있는 Median이 MySQL에는 없다?! (feat. HackerRank - Weather Observation Station 20)

실력 향상은 물론이지만, 코테를 위해 소홀히 할 수 없는 SQL

HackerRank 문제풀이 하다가 처음 알게 된 사실,, 

솔직히 좀 놀라웠다 😨

Median 함수가 없을 것이라고는 상상조차 하지 못했는데,,

Oracle 에는 있지만, MySQL 에는 없다고 함. 

 

* Median - 중앙값

이름 그대로 정말 중앙에 위치한 값이다. 값의 총 개수가 홀수이면 중앙값은 하나지만, 짝수일 경우 가운데 위치한 두 수를 2로 나눈 값으로 함.

⏬ 문제는 맨 아래 링크 참고 👇

 

[ Oracle ]

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

 

[ MYSQL ]

SELECT ROUND(LAT_N, 4)
  FROM (SELECT LAT_N, PERCENT_RANK() OVER (ORDER BY LAT_N) percent
          FROM STATION
       ) PCT_RANK
 WHERE percent = 0.5;

 

윈도우 함수 구조는 쉽게 생각하면

함수명 OVER ( 윈도우 범위 [ 파티션 ] [ 정렬 ] [ WINDOWING 절  ] )

이런 구조이다 ! 

⏬ 윈도우 함수에 대한 자세한 내용은 아래 링크 참고 👇 (아주 정리가 잘 된 사이트를 찾았다 😎 )

 

또 놀라운 사실은 !!! 

윈도우 함수 나름 잘 안다고 생각했는데,,,

윈도우 함수 중에 PERCENT_RANK() 가 있는것도 ,, 오늘 처음 알게 되었다 😁

분명 전에 윈도우함수 공부할 때 다 한 줄 알고 있었는데,, 

 

😀 😉 덕분에 오늘도 업그레이드 성공 !! 😎

 

 

 

 

[참고]

https://www.hackerrank.com/challenges/weather-observation-station-20/problem

 

Weather Observation Station 20 | HackerRank

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

www.hackerrank.com

https://jaaamj.tistory.com/148

 

 

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

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

jaaamj.tistory.com

 

https://for-my-wealthy-life.tistory.com/48

 

윈도우함수(WINDOW FUNCTION) 총정리, 순위함수와 분석함수

SQL의 윈도우 함수란 행과 행 간을 비교, 연산, 정의하기 위한 함수이다. 분석함수 또는 순위함수라고 하기도 한다. 다른 함수들처럼 중첩해서 사용할 수는 없지만 서브쿼리에서는 사용가능하다.

for-my-wealthy-life.tistory.com