반응형

https://www.hackerrank.com/challenges/weather-observation-station-5/problem

 

Weather Observation Station 5 | HackerRank

Write a query to print the shortest and longest length city name along with the length of the city names.

www.hackerrank.com

이번 문제는 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

+ Recent posts