728x90
문제
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
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
- round your answer to 4 decimal places
테이블
STATION 테이블 |
![]() |
풀이과정
▶ PERCENT_RANK()
: 결과 집합 내 행의 백분위수 순위를 계산하는 상대 순위 함수
: 지정된 순서 열에 있는 모든 값 중에서 현재 행 값의 상대적 위치를 나타내는 0과 1 사이의 값을 반환
: 계산은 순위를 기준으로 하지만 결과는 0과 1 사이에서 정규화됨
# 정답
- PERCNET_RANK 함수를 이용해 위도를 백분위수로 정규화한 뒤 순위 부여
- PERCENT_RANK() OVER(PARTITION BY 컬럼명 ORDER BY 컬럼명)
이렇게 파티션을 사용하면 해당 파티션(그룹) 내에서 순위가 부여됨
- PERCENT_RANK() OVER(PARTITION BY 컬럼명 ORDER BY 컬럼명)
- WHERE절에서 백분위수가 0.5인 값 ( =중앙값 )을 찾도록 조건을 걺
1 2 3 | SELECT ROUND(LAT_N, 4) FROM (SELECT LAT_N, PERCENT_RANK() OVER(ORDER BY LAT_N) median FROM STATION) m WHERE median = 0.5 | cs |
배운점
▶ DENSE_RANK()
- RANK 함수와 유사하지만
RANK 함수는 공동순위가 있는 경우 해당 수만큼 순위가 건너 뛰어짐
- ex. 2등이 두 명인 경우, 1 2 2 4 이렇게 순위가 부여됨
- 그에 반해, DENSE_RANK 함수는
공동순위가 있어도 숫자를 뛰어넘지 않고 순위가 매겨짐- ex. 2등이 두 명인 경우, 1 2 2 3 이렇게 순위가 부여됨
728x90
'코딩테스트 > SQL 코드카타' 카테고리의 다른 글
MySQL 해커랭크 | Top Competitors (HAVING절 사용) (0) | 2024.08.22 |
---|---|
MySQL 해커랭크 | The Report (서브쿼리 내 메인쿼리 컬럼 참조) (0) | 2024.08.21 |
MySQL 해커랭크 | Weather Observation Station (맨하탄 거리, 유클리디언 거리) (1) | 2024.08.19 |
MySQL 해커랭크 | Top Earners ( WHERE절 MAX..? 집계함수? ) (0) | 2024.07.26 |
MySQL 해커랭크 | The Blunder ( TRIM : BOTH, TRAILING, LEADING ) (0) | 2024.07.25 |
댓글