반응형
*MySQL 버전, 집계 함수(Aggregation) 문제입니다.
해커랭크 Weather Observation Station 15 문제, 샘플, 설명
- Western Longtitude(LONG_W) 구하기
이때 구해야 하는 LONG_W는 137.2345보다 작은 Northern Latitude(LAT_N) 값들 중 최댓값.
=LONG_W for the largest LAT_N in STATION that is less than 137.2345.
- 소수 4자리까지 구하기
=Round ~ to 4 decimal places.
해커랭크 Weather Observation Station 15 답
- WHERE절 서브 쿼리(중첩 서브쿼리), 비교 연산자 사용
- MAX 사용: 137.2345보다 작은 값 중 최댓값 구하기 위함
- ROUND 사용: 소수 4자리까지 나타내기 위함
SELECT ROUND(LONG_W, 4)
FROM STATION
WHERE LAT_N = (SELECT MAX(LAT_N) FROM STATION WHERE LAT_N < 137.2345);
추가 정리
- WHERE절 서브쿼리 결과값은 하나의 컬럼(EXISTS 제외).
WHER [컬럼] [연산자] [서브쿼리] 순.
이때 비교 연산자만 사용하면 서브쿼리 결과값은 하나의 값이다.
반면, 주요연산자 사용하면 서브쿼리 결과값이 하나의 컬럼이다.
#WHERE절 서브쿼리 주요연산자 사용
SELECT ROUND(LONG_W, 4)
FROM STATION
WHERE LAT_N IN(
SELECT MAX(LAT_N) FROM STATION WHERE LAT_N < 137.2345
);
WHERE 비교연산자(=) 사용은 LAT_N이랑 서브쿼리 결과값이 같다는 의미.
WHERE 주요연산자(IN) 사용은 LAT_N이 서브쿼리 결과값 내에 있다는 의미.
MAX 대신 내림차순 정렬과 LIMIT 사용 버전
SELECT ROUND(LONG_W, 4)
FROM STATION
WHERE LAT_N < 137.2345
ORDER BY LAT_N DESC
LIMIT 1;
- 문제 조건 여러 개일 때, 헷갈리지 않도록 조건별 분할 쿼리 작성하기
반응형
'SQL > HackerRank(해커랭크)' 카테고리의 다른 글
HackerRank(해커랭크) MySQL Weather Observation Station 19 문제 답 (2) | 2023.10.06 |
---|---|
HackerRank(해커랭크) MySQL Average Population of Each Continent 문제 답 (0) | 2023.10.05 |
HackerRank(해커랭크) MySQL Top Earners 문제 답 (0) | 2023.10.04 |
HackerRank(해커랭크) MySQL Binary Tree Nodes 문제 답 (0) | 2023.09.30 |
HackerRank(해커랭크) MySQL The Blunder 문제 답 (0) | 2023.09.24 |