SQL/HackerRank(해커랭크)

HackerRank(해커랭크) MySQL Weather Observation Station 15 문제 답

진리뷰 2023. 10. 2. 09:00
반응형

 

 

HackerRank(해커랭크)-MySQL-Weather-Observation-Station-15-문제-답-썸네일
Weather Observation Station 15

 

 

*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-문제-샘플-설명
Weather Observation Station 15

 

 

 

해커랭크 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;

 

  • 문제 조건 여러 개일 때, 헷갈리지 않도록 조건별 분할 쿼리 작성하기
반응형
top