순간을 기록으로

[MySQL] Higher Than 75 Marks | 부분 문자열 함수 본문

Problem Solving

[MySQL] Higher Than 75 Marks | 부분 문자열 함수

luminous13 2022. 3. 29. 12:50

문제

-75를 초과하는 점수(marks)를 받은 학생들의 이름(name)을 조회하세요
-결과는 이름의 마지막 3개 문자로 정렬(order by)하세요
-만약 마지막 3개의 문자가 같다면 id를 기준으로 오름차순 정렬(asc)을 하세요.

 

풀이

단순하게 이름을 기준으로 결과를 정렬하는게 아니라 이름의 마지막 3개의 문자를 기준으로 정렬해야 되는게 어려웠다. 

 

처음에는 혹시나? 해서 그냥 name을 기준으로 짰다.

select name
from students
where marks > 75
order by name, id;

하지만 역시 오답..

 

해결하기 위해 문자열에서 부분 문자열을 얻을 수 있는 방법을 알야아한다. 그리고 그러한 함수들을 찾았다.

 

- LEFT(컬럼명, n): 문자열의 왼쪽을 기준으로 n개의 문자를 가져온다.

- MID(컬럼명, 시작위치, n): 문자열을 지정한 위치를 기준으로 n개의 문자를 가져온다.(=SUBSTR(컬럼명, 시작위치,  n), SUBSTRING(칼럼명, 시작위치, n)

- RIGHT(칼럼명,n): 문자열의 오른쪽을 기준으로 n개의 문자를 가져온다.

select name
from students
where marks > 75
order by RIGHT(name,3), id;

이렇게 하면 name의 뒤 3문자열을 기준으로 정렬을하고 정렬 후에 같은 값을 가지는 데이터들은 두 번째 기준은 id로 오름차순 정렬이 된다.

 

 

 


출처: https://www.hackerrank.com/challenges/more-than-75-marks/problem?isFullScreen=true&h_r=next-challenge&h_v=zen 

 

Higher Than 75 Marks | HackerRank

Query the names of students scoring higher than 75 Marks. Sort the output by the LAST three characters of each name.

www.hackerrank.com

 

https://junyoung-developer.tistory.com/47

 

[MySQL] Higher Than 75 Marks

 SQL > Basic Select > Higher Than 75 Marks  Problem 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..

junyoung-developer.tistory.com

 

 

Comments