TIL - 프로그래밍/SQL
[해커랭크] The Report - MySQL
chaemj97
2023. 7. 6. 23:02
728x90
https://www.hackerrank.com/challenges/the-report/problem
The Report | HackerRank
Write a query to generate a report containing three columns: Name, Grade and Mark.
www.hackerrank.com
- 문제
- 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
반응형