배우기/SQL
HackerRank - The Report(CASE WHEN/조인, BETWEEN)_MySQL
인사잘해
2022. 4. 18. 16:04
안녕하세요!
HackerRank에 있는 The Report 문제입니다.
- 문제 설명
Students 테이블과 Grades 테이블이 주어져 있다.
이름, 등급, 점수를 출력하는 쿼리를 작성한다.
등급을 내림차 순으로 정렬하며, 8등급 아래의 학생은 이름을 Null 로 표시한다.
8~10등급 중 각 등급 내에 두 명 이상의 학생이 있을 땐 알파벳 순으로 정렬한다.
8등급 아래의 각 등급 내에 두 명 이상의 학생이 있을 땐 점수 순으로 정렬한다.
- 테이블
- 쿼리
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