Query the Name of any student in STUDENTS who scored higher than Marks. Order your output by the last three characters of each name. If two or more students both have names ending in the same last three characters (i.e.: Bobby, Robby, etc.), secondary sort them by ascending ID.
Input Format
The STUDENTS table is described as follows:
The Name column only contains uppercase (A-Z) and lowercase (a-z) letters.
Sample Input
Sample Output
Ashley
Julia
Belvet
Explanation
Only Ashley, Julia, and Belvet have Marks > . If you look at the last three characters of each of their names, there are no duplicates and 'ley' < 'lia' < 'vet'.
Problem
점수가 75점보다 높으면서 마지막 문자 3개를 이름으로 묶어 정렬하라.
단, 이름은 마지막 3개 기준 내림차순, ID는 오름차순으로 정렬
Answer
SELECT name
FROM STUDENTS
WHERE Marks > 75
ORDER BY RIGHT(name, 3), ID ASC
How to solve
처음에 문제를 잘못이해하고 마지막 문자 3개를 묶어서 첫번째 이름만 반환하라는 건 줄 알았다.
그래서 서브쿼리를 안쓰고 어떻게 하지라는 생각에 물음표로 가득찼다. 그리고 수십번의 시도 끝에 잘못 이해한 걸 인지하고 다시 고쳤다.
문자열 함수는 엑셀과 유사하다.
RIGHT(str, len)
- 문자열(str)의 가장 오른쪽에서 부터 len만큼 문자 반환
SELECT RIGHT('ABCDEF',3);
-> 'DFF'
LEFT(str, len)
- 문자열(str)의 가장 왼쪽에서 부터 len만큼 문자 반환
SELECT LEFT('ABCDEF',3);
-> 'ABC'
MID(str,pos,len)
- 문자열(str)의 특정 위치(pos)에서부터 len만큼 반환
SELECT MID('ABCDEF',3,3);
-> 'CDE'
※ SUBSTRING 함수로 대체할 수 있다.
'데이터 > SQL 문제풀이' 카테고리의 다른 글
Weather Observation Station 18 (0) | 2022.11.15 |
---|---|
HackerRank SQL - Type of Triangle (0) | 2022.11.15 |
HackerRank SQL - The Blunder (0) | 2022.11.01 |
[MySQL] HackerRank SQL - Weather Observation Station 10 (0) | 2022.10.20 |
HackerRank SQL - Weather Observation Station 9 (0) | 2022.06.21 |
댓글