본문 바로가기
TIL - 프로그래밍/SQL

[해커랭크] The Report - MySQL

by chaemj97 2023. 7. 6.
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
반응형

댓글