본문 바로가기

SQL

[SQL 챌린지] 해커랭크 정복하기 Day 2

✍ 제 머리로 코드를 짜내기 위한 챌린지입니다. (그동안 습관적으로 discussion창을 보곤 했거든요..)

 

🚀 이 포스팅 보신분 당장 저의 챌린지에 동참해주세요. (함께하면 기쁨도 두 배! 서로 온라인 메이트가 되어보아요.)

 

😇 basic단계는 하루에 몇개라도 업로드 할 예정입니다. (예> Day* ~ Day* 10 그 이상도 될 수 있습니다.)

 


문제 [Weather Observation Station 5]

풀이

-가장 긴 문자열, 짧은 문자열 각각 쿼리 작성

-가장 긴 문자열
SELECT *
FROM (SELECT CITY, LENGTH(CITY)
     FROM STATION
     ORDER BY LENGTH(CITY) DESC, CITY ASC
     )
WHERE ROWNUM = 1;

-가장 짧은 문자열
SELECT *
FROM (SELECT CITY, LENGTH(CITY)
     FROM STATION
     ORDER BY LENGTH(CITY) ASC, CITY ASC
     )
WHERE ROWNUM = 1;

 

✍ CITY 칼럼에서 가장 긴 문자열과 가장 짧은 문자열을 조회하는 문제입니다. 

 

서브 쿼리는 이럴 때 사용하는군요.... 결국 또 다른 분의 포스팅을 참고하고 말았습니다... 내머리야 힘내... 차근차근 짚어보겠습니다.

 

Oracle >

우선 문자열 길이를 확인할 수 있는 LENGTH 문법과 ORDER BY 쿼리가 가장 중요합니다.

'FROM 서브 쿼리'를 이용해 구하고자 하는 값의 조건(여기선, ORDER BY)을 걸고 본쿼리의 WHERE 구문에 하나의 row만 조회하도록 조건을 작성합니다. 

 

MySQL >

찾아보니 MySQL이 더 깔끔한 쿼리 작성이 가능합니다.

서브쿼리를 이용하지 않아도 값을 조회할 수 있기 때문입니다. 

rownum 대신 limit을 이용하면 됩니다. 

-MySQL로 가장 긴 문자열 길이 구하기

SELECT CITY, LENGTH(CITY)
FROM STATION
ORDER BY LENGTH(CITY) DESC, CITY ASC
limit 1;