조건에 맞는 서경(LONG_W) 값 찾기 SQL 문제 해결하기
오늘은 SQL을 이용해 특정 조건에 맞는 위도와 경도 값을 찾는 문제를 해결하는 방법을 소개하려고 합니다. STATION이라는 테이블이 주어지고, 주어진 조건에 따라 서경(LONG_W) 값을 찾는 문제를 풀어보겠습니다.
1. 테이블 설명
STATION 테이블에는 다음과 같은 열이 포함되어 있습니다:
FieldType
ID | NUMBER |
CITY | VARCHAR2(21) |
STATE | VARCHAR2(2) |
LAT_N | NUMBER |
LONG_W | NUMBER |
- ID : 고유 식별자
- CITY : 도시 이름
- STATE : 주(state) 약자
- LAT_N : 북위 (위도)
- LONG_W : 서경 (경도)
이 테이블을 이용해 특정 위도에 맞는 경도를 찾아야 합니다.
2. 문제 이해
주어진 문제는 다음과 같은 조건을 포함하고 있습니다.
- 조건: LAT_N(북위)의 최소값이 38.7780보다 큰 레코드를 찾습니다. 즉, 38.7780보다 큰 값들 중 가장 작은 북위 값에 해당하는 레코드를 찾으라는 뜻입니다.
- 결과: 찾은 레코드의 LONG_W(서경) 값을 소수점 네 자리까지 반올림하여 출력합니다.
3. 해결 방법
문제를 해결하기 위해 아래 단계대로 접근하겠습니다.
- 조건에 맞는 최소 LAT_N 값 찾기
LAT_N > 38.7780 조건을 만족하는 값 중에서 가장 작은 LAT_N 값을 구합니다. - 찾은 최소 LAT_N 값의 LONG_W 구하기
조건에 맞는 최소 LAT_N을 가진 레코드에서 LONG_W 값을 구한 뒤, 소수점 네 번째 자리까지 반올림합니다.
4. SQL 쿼리 작성
아래는 문제를 해결하기 위한 SQL 쿼리입니다
SELECT ROUND(LONG_W, 4)
FROM STATION
WHERE LAT_N = (SELECT MIN(LAT_N) FROM STATION WHERE LAT_N > 38.7780);
5. 쿼리 설명
- 조건부 최소값 찾기
SELECT MIN(LAT_N) FROM STATION WHERE LAT_N > 38.7780: LAT_N이 38.7780보다 큰 값들 중 가장 작은 값을 찾습니다. - 조건에 맞는 LONG_W 선택
WHERE LAT_N = (SELECT MIN(LAT_N) FROM STATION WHERE LAT_N > 38.7780): 위에서 구한 최소 LAT_N 값과 일치하는 레코드의 LONG_W 값을 선택합니다. - 결과 반올림
ROUND(LONG_W, 4): 최종 결과값을 소수점 네 자리까지 반올림합니다.
결론
이렇게 하면 조건을 만족하는 최소 북위에 해당하는 서경 값이 네 자리 반올림된 형태로 반환됩니다. 이 쿼리 형식을 익혀두면, 다양한 조건의 데이터에서 특정 값을 쉽게 추출할 수 있어 SQL 문제 풀이에 큰 도움이 될 것입니다!
서브쿼리도 어떻게 써야하는지 다시 한번 해봐야겠다.
'SQL' 카테고리의 다른 글
Weather Observation Station 5 (0) | 2024.12.04 |
---|---|
Weather Observation Station 16 (0) | 2024.10.29 |
Weather Observation Station 15 (0) | 2024.10.23 |
Weather Observation Station 14 (0) | 2024.10.22 |
Weather Observation Station 13 (0) | 2024.10.20 |