안녕하세요!
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
'배우기 > SQL' 카테고리의 다른 글
HackerRank - Placements(조인, 서브쿼리/with 문)_MySQL (0) | 2022.04.21 |
---|---|
Leetcode - 180.Consecutive Numbers(조인)_MySQL (0) | 2022.04.18 |
HackerRank - Top Competitors (조인)_MySQL (0) | 2022.04.11 |
LeetCode - 184.Department Highest Salary (조인, 서브쿼리)_MySQL (1) | 2022.04.08 |
HackerRank - Top Earners (서브쿼리 / GROUP BY 외)_MySQL (0) | 2022.04.08 |
댓글