반응형
2020/01/22 - [SQL] - [SQL] HackerRank로 시작하는 SQL - 2
문제의 요지는 '이름이 가장 짧은 도시와 가장 긴 도시 두개를 출력하는데, 만약 도시가 여러개면 알파벳순으로 선택해라'
ORDER BY 구문으로 정렬을 해야되는데, ORDER BY ASC 면 오름차순으로 DESC 면 내림차순으로 정렬한다.
또, ORDER BY는 왼쪽부터 정렬을 시작한다. 무슨말이냐면, ORDER BY CHAR_LENGTH(CITY) ASC , CITY ASC 면
길이순으로 정렬후 이름순으로 정렬해라! 라는 의미이다.
길이를 재는데엔 LENGTH 와 CHAR_LENGTH 가 있는데, LENGTH는 Byte단위로 갯수를 세므로
CHAR_LENGTH 로 세는게 정확하다.(그냥 오로지 문자단위로 가져옴)
따라서 범용적인 CHAR_LENGTH 로 연습하자.
답은 다음과같다.
/*
Enter your query here.
*/
SELECT CITY, CHAR_LENGTH(CITY) FROM STATION ORDER BY CHAR_LENGTH(CITY) ASC, CITY ASC LIMIT 1;
SELECT CITY, CHAR_LENGTH(CITY) FROM STATION ORDER BY CHAR_LENGTH(CITY) DESC, CITY ASC LIMIT 1;
성공!
SELECT 두번으로 푸는 멍청한 짓을 할뻔했는데, 다행히 방향을 바로잡았다.
지금까지 문제중에 제일 의미있었던 문제.
ORDER BY로 MIN,MAX 를 대체하는 꼼수를 알수 있었다.
또, 왼쪽순으로 정렬한다는점도 흥미로웠다.
반응형
'SQL' 카테고리의 다른 글
[SQL] HackerRank로 시작하는 SQL - 5 (0) | 2020.01.24 |
---|---|
[SQL] PRG's SQL DOCS (0) | 2020.01.24 |
[SQL] HackerRank로 시작하는 SQL - 4 (0) | 2020.01.24 |
[SQL] HackerRank로 시작하는 SQL - 2 (0) | 2020.01.22 |
[SQL] HackerRank로 시작하는 SQL - 1 (0) | 2020.01.22 |
댓글