Mo!
(HackerRank) 해커랭크 SQL [Weather Observation Station 5] Oracle 풀이 본문
SQL

(HackerRank) 해커랭크 SQL [Weather Observation Station 5] Oracle 풀이

5사 2021. 11. 30.

문제 링크

https://www.hackerrank.com/challenges/weather-observation-station-5/problem?isFullScreen=true 

 

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

STATION에서 가장 짧은 도시 이름가장 긴 도시 이름 및 각각의 길이(예: 이름의 문자 수)를 쿼리합니다.
두 개 이상의 가장 작거나 큰 도시가 있는 경우 알파벳 순으로 정렬할 때 가장 먼저 오는 도시를 선택합니다.
참고 : 원하는 출력을 얻기 위해 두 개의 쿼리를 별도로 작성할 수 있습니다. 단일 쿼리일 필요는 없습니다.

 

LENGTH 함수, UNION ALL, ROWNUM을 이용한 풀이

 

 

select city, length(city)
    from station
    where length(city) = (select min(length(city)) from station)
    order by 1 asc

-- LENGTH 함수를 이용하여 city의 문자열 길이를 구하고 그중 가장 작은(min) 것을 뽑는다

-- where 절에 단일행 서브 쿼리로 넣어서 문자열의 길이가 가장 작은 도시 이름과 길이를 출력한다

-- 이때, 문자열의 길이가 가장 작은 값의 도시가 여러 개가 나올 수 있으므로 알파벳 순으로 출력해 놓는다

 

select city, length(city)
    from station
    where length(city) = (select max(length(city)) from station)
    order by 1 asc

-- LENGTH 함수를 이용하여 city의 문자열 길이를 구하고 그중 가장 긴(max) 것을 뽑는다

-- where 절에 단일행 서브 쿼리로 넣어서 문자열의 길이가 가장 긴 도시 이름과 길이를 출력한다

-- 이때, 문자열의 길이가 가장 작은 값의 도시가 여러 개가 나올 수 있으므로 알파벳 순으로 출력해 놓는다

 

where rownum = 1

"두 개 이상의 가장 작거나 큰 도시가 있는 경우 알파벳 순으로 정렬할 때 가장 먼저 오는 도시를 선택한다."

-- 가장 먼저 오는 하나의 도시를 뽑기 위해 ROWNUM을 사용한다

 

-- union all을 통해 두 결과를 함께 출력한다

Comments