https://www.hackerrank.com/challenges/weather-observation-station-5/problem
2개 분리된 쿼리 작성해도 된다고 했는데 뭔 말인지 모르겠어서 그냥 무시하고 풀었더니 완전 엉망으로 풀었다.
차마 코드 넣기 힘들 정도...
FROM 절에서 LENGTH구하고 WHERE절에서 MAX, MIN 구하기 위해 이중서브쿼리썼다.. 그러고도 값이 여러개면 1개 출력하는게 안 돼서 SELECT에 WINDOW쓰고 난리났었음..ㅎ 하면서도 이게 맞아? 이거 아닌거 같은데...이랬다. 근데 또 답은 맞더라...하하..
SELECT city
, length(city) len
FROM STATION
ORDER BY len, city
LIMIT 1;
SELECT city
, length(city) len
FROM STATION
ORDER BY len DESC, city
LIMIT 1
이렇게 알려주셔서 했는데 답이 이상하게 나와서 커뮤니티에 글 작성했다.
이렇게 나옴.. 띠용?
글에 작성한 쿼리 복사해서 돌려봤더니 되더라라는 답변이 달려 다시 돌려봤는데 이번엔 또 된다.
그냥 일시적인 오류였나보다..
select city, lc
from (
select city, length(city) as lc
, row_number() over (order by length(city), city) as row_no_asc
, row_number() over (order by length(city) desc, city) as row_no_desc
from station
) a
where row_no_asc = 1 or row_no_desc = 1
order by lc
이건 다른 풀이인데 쿼리 2개 안 쓰고 하려면 row_number 사용해서 해도 좋은 듯 하다.