728x90
https://www.hackerrank.com/challenges/the-report/problem
- 문제
- 8점보다 낮은 점수 학생의 이름은 원하지 않는다.
- Grade 내림차순으로 (학생이름, Grade, Marks) 출력
- 조건
- 8~10점 분포의 학생은 이름순으로 정렬
- 1~7점 분포의 학생은 Marks으로 정렬 + 이름은 NULL로 지정
- 풀이
Grades 테이블을 통해 각 학생의 Grade 구하기
SELECT *
FROM Students AS s
INNER JOIN Grades AS g ON s.Marks BETWEEN g.Min_Mark AND g.Max_Mark;
JOIN의 조건으로 BETWEEN ~ AND ~ 사용 가능하다.
CASE문을 사용하여 Grade에 따른 이름 정하기
CASE WHEN g.Grade >= 8 THEN s.Name ELSE Null END
- 정답 코드
SELECT CASE WHEN g.Grade >= 8 THEN s.Name ELSE Null END
, g.Grade
, s.Marks
FROM Students AS s
INNER JOIN Grades AS g ON s.Marks BETWEEN g.Min_Mark AND g.Max_Mark
ORDER BY g.Grade DESC, s.Name, s.Marks;
728x90
반응형
'TIL - 프로그래밍 > SQL' 카테고리의 다른 글
[SQL] 정규표현식 - 해커랭크 Weather Observation Station 6~11 (0) | 2023.07.07 |
---|---|
[리트코드] 180. Consecutive Numbers - MySQL (0) | 2023.07.06 |
[SQL] WITH 절 / WITH RECURSIVE 절 (0) | 2023.07.06 |
[해커랭크] Challenges - MySQL (0) | 2023.07.06 |
[리트코드] 196. Delete Duplicate Emails - MySQL (0) | 2023.07.06 |
댓글