728x90
1. Students 와 Grades를 between을 사용하여 조인한다.
2. 8등급보다 낮은 등급을 받은 학생들의 이름은 null 사용한다.
3. 높은 등급 순으로 정렬한다. 혹시 같은 등급이 있다면 이름을 알파벳 순서로 정렬한다.
null 인 이름이 있는 것은 학년별로 내림차순한다. 만약 그들에게 같은 등급(1-7)을 받은 학생이 둘 이상 있다면, 그 학생들의 marks 를 기준으로 오름차순으로 정렬한다.
1. Students 와 Grades를 between을 사용하여 조인한다.
select *
from students as s
join grades as g on s.marks between g.min_mark and g.max_mark

2. 8등급보다 낮은 등급을 받은 학생들의 이름은 null 사용한다.
select (case when g.grade < 8 then null else s.name end) as name,
g.grade,
s.marks
from students as s
join grades as g on s.marks between g.min_mark and g.max_mark

3. 높은 등급 순으로 정렬한다. 혹시 같은 등급이 있다면 이름을 알파벳 순서로 정렬한다.
null 인 이름이 있는 것은 학년별로 내림차순한다. 만약 그들에게 같은 등급(1-7)을 받은 학생이 둘 이상 있다면, 그 학생들의 marks 를 기준으로 오름차순으로 정렬한다.
select (case when g.grade < 8 then null else s.name end) as name,
g.grade,
s.marks
from students as s
join grades as g on s.marks between g.min_mark and g.max_mark
order by grade desc, name,s.marks

'SQL 공부' 카테고리의 다른 글
| LeetCode로 공부하기180. Consecutive Numbers (0) | 2024.02.01 |
|---|---|
| HackerRank로 SQL 공부하기 - Challenges (0) | 2023.12.29 |
| 데이터를 받고 파악하는 법, 시간 데이터 파악 (0) | 2023.12.26 |
| LeetCode 로 공부하기 184. Department Highest Salary (1) | 2023.12.26 |
| LeetCode 로 공부하기 196. Delete Duplicate Emails (0) | 2023.12.26 |