Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 백준
- GCP
- 성능테스트툴
- 스택
- Spring Web MVC
- 11659
- OOP
- MySQL
- Array.asList
- 구간합구하기
- 코드스테이츠
- 백준 11659
- 클라우드에서 도커 실행하기
- 인텔리제이
- 싱글톤패턴
- List.of
- Spring MVC 구성요소
- 코드스테이츠 백엔드
- java
- 알고리즘
- 투포인터알고리즘
- 프로그래머스
- 재귀와반복문
- 버블정렬
- 자바
- vm인스턴스생성
- Spring MVC 동작원리
- 재귀함수
- String.valueOf()
- 코딩테스트
Archives
- Today
- Total
순간을 기록으로
[MySQL] Higher Than 75 Marks | 부분 문자열 함수 본문
문제
-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://junyoung-developer.tistory.com/47
'Problem Solving' 카테고리의 다른 글
[MySQL] Employee Salaries (0) | 2022.03.29 |
---|---|
[MySQL] Employee Names (0) | 2022.03.29 |
[MySQL] Weather Observation Station 12 | 정규표현식 (0) | 2022.03.29 |
[MySQL] Weather Observation Station 11 | 정규표현식 (0) | 2022.03.29 |
[MySQL] Weather Observation Station 10 | 정규표현식 (0) | 2022.03.29 |
Comments