728x90
해커랭크에서 SQL 관련 문제를 풀면서 알게된 부분을 정리합니다.
다음 문제는 LAT_N 의 중앙값을 구한 후 반올림을 하는 문제이다. 나는 당연히 Median을 사용해서 풀었는데 자꾸 틀렸다고 해서 찾아보니 Mysql에서는 Median 함수가 적용이 안된다고 한다. 언어를 Oracle로 설정하고 풀어보니 한번에 풀어졌다.
그래도 나중에 어떠한 언어를 사용할지 모르기 때문에 Mysql로도 문제를 풀어봤다.
먼저, Oracle로 풀어보자.
[Oracle] 중앙값 구하기
SELECT ROUND(MEDIAN(LAT_N,4)
FROM STATION;
오라클에서는 다음과 같이 간단하게 함수를 사용해서 구할 수 있다. 하지만 Mysql은 아니었다. ㅠㅠㅠ 참고를 해보니 다양하게 푸는 방법들이 있었고, 복잡도도 다양하게 있었다.
[Mysql] 중앙값 구하기
SELECT ROUND(LAT_N,4)
FROM(SELECT LAT_N, PERCENT_RANK() OVER (ORDER BY LAT_N) percent
FROM STATION) a
WHERE percent = 0.5;
PERCENT_RANK() 함수는 특정값(수치)이 전체에서 몇퍼센트인지를 계산하여 알려주는 함수이다. 이 함수를 떠오르는 것이 포인트다
그러고 나서 그 값이 0.5인 값을 구해주면 ?? 그 값이 바로 중앙값이 된다.
왜 이렇게 복잡하게 푸는건지 모르겠다. 아직 잘 모르겠지만 오라클이 더 간편해 보인다 ㅎㅎ
'SQL' 카테고리의 다른 글
[프로그래머스 SQL] 보호소에서 중성화한 동물 (0) | 2021.04.07 |
---|---|
[HackerRank] Type of Triangle (0) | 2021.03.24 |
[Oracle VS Mysql] 나머지 구하기 (0) | 2021.03.22 |
SQL(Structured Query Language) 종류 (0) | 2021.03.15 |
관계형 데이터베이스(Relation Database) (0) | 2021.03.15 |