본문 바로가기
SQL

[SQL] HackerRank로 시작하는 SQL - 3

by 슈퍼닷 2020. 1. 22.
반응형

2020/01/22 - [SQL] - [SQL] HackerRank로 시작하는 SQL - 2

 

[SQL] HackerRank로 시작하는 SQL - 2

2020/01/22 - [SQL] - [SQL] HackerRank로 시작하는 SQL - 1 [SQL] HackerRank로 시작하는 SQL - 1 해커랭크라는 문제들이 수록되어있는 사이트에서 SQL 문제를 풀며 쿼리문을 공부하기로 했다. MySql 기준으로 컴..

jogamja.tistory.com

 

문제의 요지는 '이름이 가장 짧은 도시와 가장 긴 도시 두개를 출력하는데, 만약 도시가 여러개면 알파벳순으로 선택해라'

 

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

댓글