배우기/SQL

HackerRank - The Report(CASE WHEN/조인, BETWEEN)_MySQL

인사잘해 2022. 4. 18. 16:04

안녕하세요!

 

HackerRank에 있는 The Report 문제입니다.

 

- 문제 설명

Students 테이블과 Grades 테이블이 주어져 있다.

이름, 등급, 점수를 출력하는 쿼리를 작성한다.

등급을 내림차 순으로 정렬하며, 8등급 아래의 학생은 이름을 Null 로 표시한다.

8~10등급 중 각 등급 내에 두 명 이상의 학생이 있을 땐 알파벳 순으로 정렬한다.

8등급 아래의 각 등급 내에 두 명 이상의 학생이 있을 땐 점수 순으로 정렬한다.

 

- 테이블

Students 테이블
Grades 테이블

- 쿼리

1. ON 조건에 부등호와 AND를 사용한 조인

SELECT CASE WHEN g.grade < 8 THEN null ELSE s.name END AS name
        , g.grade
        , s.marks
FROM students s
    INNER JOIN grades g
    ON s.marks <= g.max_mark
    AND s.marks >= g.min_mark
ORDER BY g.grade DESC, s.name, s.marks

2. ON 조건에 BETWEEN 을 사용한 조인

SELECT CASE WHEN g.grade < 8 THEN null ELSE s.name END AS name
     , g.grade
     , s.marks
FROM students s
    INNER JOIN grades g
    ON s.marks BETWEEN g.min_mark AND g.max_mark
ORDER BY g.grade DESC, s.name, s.marks

 

 

 

- 출처 : https://www.hackerrank.com/challenges/the-report/problem