해커랭크 [The Report]

윤태영·2024년 8월 27일
0

문제

https://www.hackerrank.com/challenges/the-report/problem?isFullScreen=true

Ketty는 이브에게 이름, 등급, 점수 세 열이 포함된 보고서를 생성하는 작업을 맡깁니다.
Ketty는 8보다 낮은 등급를 받은 학생들의 이름을 원하지 않습니다.
보고서는 등급별로 내림차순이어야 합니다. 만약 같은 등급(8이상)이의 학생이 둘 이상 있다면, 그 학생들의 이름을 알파벳 순으로 정렬합니다.

마지막으로, 만약 등급이 8보다 낮으면, "NULL"을 이름으로 사용하고 그들의 점수를 내림차순으로 나열합니다.

만약 같은 등급(1~7)의 학생이 둘 이상 있다면, 그 학생들의 이름을 오름차순으로 정렬합니다.

INPUT FORMAT

TABLE NAME : Students

TABLE NAME : Grades

SAMPLE INPUT

Sample Output

문제풀이

  • GRADE가 8이상인 사람들과 8미만인 사람들의 정렬을 다르게 해야한다.
  • 8이상/미만 각 컬럼별로 테이블을 2개 만들어야 할 것으로 생각되지만 8미만인 사람들은 이름이 NULL로 통일되기 때문에 8이상인 사람들의 이름 정렬에 영향을 받지 않는다.

쿼리

SELECT  CASE WHEN B.GRADE < 8 THEN NULL 
               ELSE A.NAME END AS NAME,
               B.GRADE AS GRADE,
               A.MARKS
               
FROM STUDENTS A
INNER JOIN GRADES B ON A.MARKS BETWEEN MIN_MARK AND MAX_MARK
ORDER BY B.GRADE DESC, A.NAME, A.MARKS
profile
ice blue

0개의 댓글