문제 설명
이번 포스팅에서는 STATION 테이블에서 가장 짧은 도시 이름과 가장 긴 도시 이름을 찾는 SQL 문제를 다룹니다. 단, 조건은 다음과 같습니다:
- 가장 짧은 도시 이름과 그 길이를 구합니다.
- 만약 이름이 같은 경우, 알파벳 순으로 가장 앞선 도시를 선택합니다.
- 가장 긴 도시 이름과 그 길이를 구합니다.
- 마찬가지로, 이름이 같은 경우, 알파벳 순으로 가장 앞선 도시를 선택합니다.
- 최종 결과는 두 도시의 이름과 이름의 길이를 포함해야 합니다.
문제 해결 접근 방식
- 도시 이름 길이 계산: SQL의 LENGTH(CITY)를 사용하여 도시 이름의 길이를 계산합니다.
- 가장 짧은 도시 찾기:
- 도시 이름 길이를 기준으로 오름차순(ASC) 정렬.
- 같은 길이를 가진 도시가 여러 개라면 알파벳 순으로 정렬.
- LIMIT 1을 사용해 가장 짧은 이름을 가진 도시 중 첫 번째 도시를 선택.
- 가장 긴 도시 찾기:
- 도시 이름 길이를 기준으로 내림차순(DESC) 정렬.
- 같은 길이를 가진 도시가 여러 개라면 알파벳 순으로 정렬.
- LIMIT 1을 사용해 가장 긴 이름을 가진 도시 중 첫 번째 도시를 선택.
- 결과 병합:
- UNION ALL을 사용해 두 개의 쿼리 결과를 하나로 병합합니다.
SQL 쿼리 코드
(SELECT CITY, LENGTH(CITY) AS NAME_LENGTH
FROM STATION
ORDER BY LENGTH(CITY) ASC, CITY ASC
LIMIT 1)
UNION ALL
(SELECT CITY, LENGTH(CITY) AS NAME_LENGTH
FROM STATION
ORDER BY LENGTH(CITY) DESC, CITY ASC
LIMIT 1);
예제 데이터
다음과 같은 STATION 테이블이 있다고 가정합니다:
CITYLENGTH(CITY)
Paris | 5 |
Dubai | 5 |
New York | 8 |
Tokyo | 5 |
Johannesburg | 12 |
실행 결과
위 데이터를 기반으로 쿼리를 실행하면 다음과 같은 결과가 나옵니다:
CITYNAME_LENGTH
Dubai | 5 |
Johannesburg | 12 |
- 가장 짧은 도시: 이름 길이가 5자인 도시 중 알파벳 순으로 가장 앞선 Dubai.
- 가장 긴 도시: 이름 길이가 12자인 도시 Johannesburg.
추가 팁
- LENGTH() 함수는 문자열의 길이를 계산할 때 유용합니다.
- ORDER BY와 LIMIT은 데이터를 정렬하고 특정 조건에 맞는 결과를 빠르게 찾는 데 효과적입니다.
- UNION ALL은 두 쿼리 결과를 합쳐주는 역할을 합니다. 중복 제거가 필요하다면 UNION을 사용하면 됩니다.
마무리
이번 문제를 통해 SQL에서 문자열 길이 계산과 정렬, 그리고 조건에 맞는 데이터를 선택하는 방법을 배웠습니다. 실무에서도 데이터의 최대값, 최소값, 특정 조건에 맞는 값을 찾는 데 유용하게 사용할 수 있습니다.
궁금한 점이나 개선할 방법이 있다면 댓글로 남겨주세요! 😊
'SQL' 카테고리의 다른 글
Weather Observation Station 17 (0) | 2024.10.31 |
---|---|
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 |