해커랭크 SQL문제_0803

starlikedh
|2021. 8. 3. 12:19

Weather Observation Station15

문제: Query the Western Longitude (LONG_W) for the largest Northern Latitude (LAT_N) in STATION that is less than 137.2345.
Round your answer to  4 decimal places.

풀이: 137.2345보다 작은 가장 큰 LAT_N에 대해 LONG_W를 찾는 문제였다. 또 하나의 주어진 조건으로는 소수점 4자리에서 반올림하는 것.
처음에는 서브 쿼리가 아닌 ORDER BY 절에 ROWNUM으로 해서 하나의 쿼리로 해결하는 방법을 생각했었는데 실패했다..
왜지..왜지..하다가 ORDER BY절에 ROWNUM 사용 시 순번이 뒤섞인다고 서브 쿼리로 처리해줘야 한다길래,
서브쿼리로 처리해주고 부모 쿼리 WHERE절에 ROWNUM을 주어서 해결 완료.

SELECT ROUND(LONG_W, 4)
FROM (SELECT LONG_W
      FROM STATION
      WHERE LAT_N < 137.2345
      ORDER BY LAT_N DESC)
WHERE ROWNUM = 1;

Weather Observation Station16

문제: Query the smallest Northern Latitude (LAT_N) from STATION that is greater than 38.7880.
Round your answer to  4 decimal places.

풀이: 38.7880보다 큰 가장 작은 LAT_N를 찾는데 소수점 4자리에서 반올림하는 문제.
앞선 문제에서 ROUND LONG_W를 LAT_N으로 바꾸고, 서브 쿼리 내 찾을 칼럼이랑 조건이랑 정렬만 수정해주면 바로 해결 가능한 문제였다.

SELECT ROUND(LAT_N, 4)
FROM(SELECT LAT_N
      FROM STATION
      WHERE LAT_N > 38.7880
      ORDER BY LAT_N ASC)
WHERE ROWNUM = 1;

Weather Observation Station17

문제: Query the Western Longitude (LONG_W) where the smallest Northern Latitude (LAT_N) in STATION is greater than 38.7880.
Round your answer to 4 decimal places.

풀이: 가장 작은 LAT_N이 38.7880보다 큰 LONG_W를 구하되 소수점 아래 5번째 자리에서 반올림해서 넷째 자리까지 구하는 문제.

SELECT ROUND(LONG_W, 4)
FROM(SELECT LONG_W
      FROM STATION
      WHERE LAT_N > 38.7880
      ORDER BY LAT_N ASC)
WHERE ROWNUM = 1;

 

'Database' 카테고리의 다른 글

해커랭크 SQL문제_0805  (0) 2021.08.05
해커랭크 SQL문제_0804  (0) 2021.08.04
해커랭크 SQL문제_0802  (0) 2021.08.02
코딩테스트 연습_0729  (0) 2021.07.29
코딩테스트 연습_0728  (0) 2021.07.28