해커랭크SQL문제_0719

starlikedh
|2021. 7. 19. 14:39

Weather Observation Station5

문제: Query the two cities in STATION with the shortest and longest CITY names,
 as well as their respective lengths (i.e.: number of characters in the name). 
If there is more than one smallest or largest city, choose the one that comes first when ordered alphabetically. 

풀이: CITY를 우선 알파벳 순으로 정렬을 하고 글자수를 카운트해서 제일 글자수가 적은 것, 제일 글자수가 큰 것을 출력하는 문제.

해결하는데 20 ~ 30분정도나 꽤 길게 걸렸는데 처음 정렬만 해서 쭉 출력하는 것은 금방 쿼리문을 만들었었다.
그른데..이거를 이제 알파벳순으로 해서 라인 하나만 출력은??? 여기서 고민을 좀 했다.
구글링을 해 본 결과 rownum = 1을 하면 제일 처음 라인만 출력이 된다길래 해봤더니 실패..
결론은 처음 정렬만 해서 쭉 출력된거를 서브쿼리로 처리하고 메인쿼리를 만들어서 여기서 where절에 rownum을 1로 주었다.
최소 최대 모두 출력해야 하니 최소는 길이 카운트해서 asc로, 최대는 길이 카운트해서 desc로 정렬해주기.

SELECT *
FROM (
    SELECT city, LENGTH(city) as l_city
    FROM STATION
    ORDER BY l_city asc, city asc)
WHERE ROWNUM = 1;

SELECT *
FROM (
    SELECT city, LENGTH(city) as l_city
    FROM STATION
    ORDER BY l_city desc, city asc)
WHERE ROWNUM = 1;

 

 

'Database' 카테고리의 다른 글

해커랭크 SQL문제_0721  (0) 2021.07.21
해커랭크SQL문제_0720  (0) 2021.07.20
해커랭크 SQL문제_0717  (0) 2021.07.17
해커랭크 SQL문제_0716  (0) 2021.07.16
해커랭크 SQL문제_0715  (0) 2021.07.15