인프런 커뮤니티 질문&답변

u_innovation님의 프로필 이미지
u_innovation

작성한 질문수

[백문이불여일타] 데이터 분석을 위한 기초 SQL

ORDER BY 해커랭크 문제풀이 2 + 문자열을 자르는 SUBSTR() 함수

secondary sort them by ascending ID.

작성

·

371

1

정렬해줄 때 이해가 잘 되지 않는데요 ㅠㅠ

이름의 끝에 철자가 3개가 같으면 두번째 정렬 기준을 id로 해주라는 뜻인가요..?

그러면 id도 오름차순으로 정렬되기 때문에 구분이 되는건지.. ㅠㅠ

답변 6

0

ORDER BY RIGHT(name,3), ID
이부분만 가지고
'
2. 만약 RIGHT(name,3)가 똑같은
데이터가 2개 이상 있을 경우'가
if를 사용 하지 않아도 적용 되는 것인가요?

0

이보민님의 프로필 이미지
이보민
지식공유자

@정지운님

해당 게시글에 문의 남겨주셔서 부득이하게 이쪽으로 답변드립니다.
블로그 게시와 관련된 내용은 아래 질문에 대한 답변을 참고하시면 될 것 같습니다.

https://www.inflearn.com/questions/73544

감사합니다.

0

이보민님의 프로필 이미지
이보민
지식공유자

안녕하세요 u_innovation님

SELECT name
;FROM students
;WHERE marks > 75
;ORDER BY RIGHT(name,3), ID

이때, ORDER BY를 해석하자면

만약 이름 컬럼에 있는 데이터가 끝에서 3개의 이름(철자)이 같은 것이 있다면, ID를 기준으로 정렬해라는 뜻 맞나요..?

예시로 주신 쿼리에서 ORDER BY의 내용은

1. 우선 데이터를 RIGHT(name, 3)으로 오름차순 정렬을 하되 
2. 만약 RIGHT(name,3)가 똑같은 데이터가 2개 이상 있을 경우 
3. 그 데이터들은 ID를 기준으로 오름차순 정렬을 해주어라

라는 뜻으로 해석하시면 됩니다.

ORDER BY가 계속 헷갈리신다면 데이터를 이용해서 여러가지 기준으로 직접 정렬을 해보시고 데이터가 어떻게 출력되는지 확인해보시면 더 빠르게 익히실 수 있을 거에요.

궁금증이 해결되셨길 바랍니다 :)
감사합니다.

0

SELECT name 

FROM STUDENTS 

where Marks > 75 

ORDER BY SUBSTR(NAME,-3) , id;

이 방법도있네요 ~

0

안녕하세요 선생님.

혹시 공부를하면서 정리 한 내용을 블로깅 해도 괜찮을까요?

0

u_innovation님의 프로필 이미지
u_innovation
질문자

SELECT name
;FROM students
;WHERE marks > 75
;ORDER BY RIGHT(name,3), ID

이때, ORDER BY를 해석하자면

만약 이름 컬럼에 있는 데이터가 끝에서 3개의 이름(철자)이 같은 것이 있다면, ID를 기준으로 정렬해라는 뜻 맞나요..?

u_innovation님의 프로필 이미지
u_innovation

작성한 질문수

질문하기