[SQL Runday] HackerRank - The Report

Lana Chung·2022년 4월 7일
0

SQLRunday

목록 보기
5/16
post-thumbnail
post-custom-banner

학생 이름, 등급, 성적을 조회하는 쿼리를 작성해라.
학생 관련 테이블인 Students와 성적에 따라 등급을 매기는 Grades 테이블이 있다. 다음의 조건에 따라 조회해라.

  1. Name, Grade, Mark 조회
  2. 8등급 아래 학생들은 이름을 'Null'로 조회
  3. grade 기준 내림차순 정렬
  4. 같은 grade 끼리는 Name 알파벳순 정렬
  5. Null로 표시된 학생들은 Marks로 오름차순 정렬

Key Points

  • 두 테이블이 공유하는 외래키가 없을때, 어떻게 Join 할 수 있을까?
  • 같은 형태(integer)라면, Between on을 활용해 Join할 수 있음.
select s.name, g.grade, s.marks 
from students s
join grades g 
on s.marks between g.Min_Mark and g.Max_Mark
  • 여기에 문제에서 나온 조건에 따라 If(), order by를 쿼리해주면 된당.

최종 쿼리

select if(g.grade < 8, Null, s.name), 
			g.grade, s.marks
from students s
join grades g
on s.marks between g.Min_Mark and g.Max_Mark
order by g.grade DESC, s.name, s.marks
profile
그게 쉬운 일이었다면, 아무런 즐거움도 얻을 수 없었을 것이다.
post-custom-banner

0개의 댓글