몸과 마음이 건전한 SW 개발자

[HackerRank-MSSQL] 해커랭크 Basic Join - The Report 본문

SQL/MSSQL

[HackerRank-MSSQL] 해커랭크 Basic Join - The Report

스위태니 2026. 4. 21. 14:20
728x90

문제 링크

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(gra.grade >= 8, stu.name, null), gra.grade, stu.marks from students as stu
left join grades as gra on stu.marks >= gra.min_mark and stu.marks <= gra.max_mark
order by gra.grade desc, stu.name;

정답 코드

SELECT 
    CASE 
        WHEN G.Grade >= 8 THEN S.Name 
        ELSE NULL 
    END AS Name, 
    G.Grade, 
    S.Marks
FROM Students S
JOIN Grades G ON S.Marks BETWEEN G.Min_Mark AND G.Max_Mark
ORDER BY 
    G.Grade DESC, 
    CASE WHEN G.Grade >= 8 THEN S.Name END ASC,
    CASE WHEN G.Grade < 8 THEN S.Marks END ASC;

풀이 과정

  • 일단 8등급 이하 학생은 null로 보여주려고 했다.
    • 근데 IF가 없고 여기서는 CASE END와 그 속에서 WHEN THEN ELSE를 써야했다.
  • 조인은 잘 했는데 정렬을 틀렸다.
  • 등급 순 내림차순으로 정렬하고
    • 8등급 이상은 이름 + 오름차순
    • 8등급 미만은 점수 + 오름차순
    • 으로 정렬해야 한다.

느낀점

  • 이 바닥 겸손해야 한다.
  • when then else case end 봤지만 쓸줄 모른다.
728x90