mySQL
[HackerRank]-The Report
bellhundred
2023. 3. 1. 21:14
https://www.hackerrank.com/challenges/the-report/problem?isFullScreen=true
The Report | HackerRank
Write a query to generate a report containing three columns: Name, Grade and Mark.
www.hackerrank.com
SELECT IF(B.GRADE>=8, A.NAME, 'NULL'), B.GRADE, A.MARKS
FROM Students A join Grades B
ON A.MARKS BETWEEN B.MIN_MARK AND B.MAX_MARK
ORDER BY B.GRADE DESC, A.NAME, A.MARKS
문제 조건을 하나씩 살펴보면
1. 출력은 이름, 등급, 점수로 하되 등급이 8등급 미만인 사람은 이름 대신 'NULL'로 표시한다.
2. 등급은 Grades의 Min_mark와 Max_mark 사이의 값으로 선택한다.
3. 정렬은 Grade의 내림차순, 이름의 오름차순, 점수의 오름차순 으로 표시한다.
갑자기 레벨이 넘 오른 거 같긴 하지만 하나씩 분리해서 생각해보면
SELECT IF(B.GRADE>=8, A.NAME, 'NULL')
등급이 8등급 이상인지 이하인지에 따라 표기를 다르게 하는 방법은 IF를 통해서 사용할 수 있다.
IF(조건, 조건이 참일 경우 표시할 것, 조건이 거짓일 경우 표시할 것)
ON A.MARKS BETWEEN B.MIN_MARK AND B.MAX_MARK
점수가 Min_mark와 Max_mark 사이인 경우 해당 등급(B.Grade)을 표시할 것
이 두 부분이 조금 힘든 부분 아니었나 싶다.