[SQL] The Report | HackerRank(해커랭크)

키키·2022년 10월 18일
0

SQL

목록 보기
1/2

해커랭크 문제 바로가기

문제

케티 는 이브에게 이름, 등급, 마크 3개 열을 포함한 리포트를 작성하는 업무를 줍니다. 케티는 8점 이하의 점수를 받은 학생의 이름을 원하지 않으며, 보고서는 반드시 grade에 의해 내림차순으로 정렬되어야 합니다. -- 높은 grade를 받은 학생을 가장 먼저 작성해주세요. 만약 grade(8-10)가 동일한 경우, 학생들의 이름순(알파벳 순)으로 정렬해주세요. 마지막으로, 등급이 8보다 낮은 경우 학생들의 이름 대신 NULL을 출력하고, grade가 높은 순서대로 정렬해주세요. 만약, grade(1-7)가 동일한 경우 학생들의 mark 순서대로(오름차순) 정렬해주세요.


풀이 순서

1) join : students table과 grades table between 사용하여 join
2) 조건문 : grade가 8보다 낮은 경우 null로 출력
3) 정렬 : 문제 조건에 따라 grade 내림차순, name, marks 오름차순 정렬


코드

SELECT IF(g.grade < 8, null, s.name) AS name
     , g.grade
     , s.marks 
FROM students s 
     INNER JOIN grades g ON (s.marks BETWEEN g.min_mark AND max_mark)
ORDER BY g.grade DESC, s.name, s.marks
profile
아무튼 데이터 분석가

0개의 댓글