https://www.hackerrank.com/challenges/weather-observation-station-5/problem
이번 문제는 MySQL을 통해 아래와 같은 STATION이라는 테이블에서, CITI name(Column명 CITY)이 가장 짧은 것과 긴 것을 출력하는 것입니다. 이때 출력 시 주의할 점은, 같은 길이의 CITY name을 가진 것들에 대해서는 알파벳 순서가 가장 빠른 것을 출력하면 됩니다.
Output : (CITY name), (Length of the CITY name)
SELECT , CHAR_LENGTH(), ORDER BY (DESC, ASC)를 활용하여 문제를 해결하였습니다.
1. 방법
1) CITY Column의 길이 중 가장 가장 짧은 것, 긴 것을 뽑는다.
SELECT CITY, MIN(CHAR_LENGTH(CITY)) FROM STATION;
SELECT CITY, MAX(CHAR_LENGTH(CITY)) FROM STATION;
문자열의 길이를 출력하는 방식은 2가지가 있습니다.
* LENGTH() : BYTE 수를 기준으로 문자열의 길이를 출력합니다.
* CHAR_LENGTH() : 글자 수를 기준으로 문자열의 길이를 출력합니다.
2) 같은 길이를 가진 문자열이 여러 개 있을 수 있으므로, 알파벳 순으로 정렬하여 출력한다.
SELECT CITY, CHAR_LENGTH(CITY)
FROM STATION
ORDER BY 2 ASC,1 LIMIT 1;
SELECT CITY, CHAR_LENGTH(CITY)
FROM STATION
ORDER BY 2 DESC,1 DESC LIMIT 1;
정렬은 ORDER BY로 진행할 수 있습니다. ASC는 오름차순, DESC는 내림차순입니다. 길이가 가장 짧은 것은 CHAR_LENGTH(CITY)를 오름차순으로 정렬한 뒤 1개만 가져오면 됩니다. 이 때 ORDER BY 뒤에 CHAR_LENGTH, CITY 순으로 입력하면, 우선순위를 가지고 정렬할 수 있습니다.
'DB > SQL' 카테고리의 다른 글
Hackerrank - Type of Triangle (0) | 2020.03.24 |
---|---|
Hackerrank - SQL (0) | 2020.03.17 |
Hackerrank[SQL] - Weather Observation Station 6 (0) | 2020.03.10 |
Hackerrank[SQL] - Weather Observation Station 4 (0) | 2020.03.06 |