코딩 테스트/MySQL

[HackerRank] The Report

알밤바 2025. 7. 25. 11:29
728x90
반응형
 

The Report | HackerRank

Write a query to generate a report containing three columns: Name, Grade and Mark.

www.hackerrank.com


문제

 

 

문제 접근 방식

우선 STUDENTS 테이블과 GRADES 테이블을 조인하는 것이 첫번째,

그 다음에 문제에서 요구하는 조건들에 맞춰 조건문을 작성하는 것이다.

 

STUDENTS 테이블에는 학생들의 MARKS가 있으며, GRADES 테이블에는 각 GRADE 별 MARKS 범위가 나와있다

그렇기에 그 범위 내에 해당하는 GRADES를 가져오도록 JOIN 시 ON 조건절에 작성해주면 된다.

ON 절에 BETWEEN을 활용하여 범위 조건을 사용할 수 있다.

 

그 다음 문제에서 요구하는 조건들이다.

- GRADE가 8보다 작은 학생들의 NAME은 NULL 사용, GRADE 기준 내림차순, GRADE가 같은 경우 MARKS 기준 오름차순

- GRADE가 8보다 큰 학생들은 GRADE 기준 내림차순, GRADE가 같은 경우 NAME 기준 오름차순

 

NAME을 NULL값으로 지정하는 것은 CASE WHEN 문을 활용하면 되는 것이고,

나머지 정렬은 ORDER BY를 통해 조건을 작성하면 된다.

SELECT CASE WHEN GRADE >= 8 THEN NAME ELSE NULL END AS NAME
     , GRADE
     , MARKS 
FROM STUDENTS A1
LEFT JOIN GRADES A2
    ON A1.MARKS BETWEEN A2.MIN_MARK AND A2.MAX_MARK
ORDER BY GRADE DESC, NAME, MARKS
;
728x90
반응형

'코딩 테스트 > MySQL' 카테고리의 다른 글

[HackerRank] Ollivander's Inventory  (2) 2025.07.29
[HackerRank] Top Competitors  (2) 2025.07.28
[HackerRank] Weather Observation Station 20  (0) 2025.07.24
[HackerRank] New Companies  (0) 2025.07.22
[HackerRank] Binary Tree Nodes  (0) 2025.07.21