Problem
Ketty gives Eve a task to generate a report containing three columns: Name, Grade and Mark. Ketty doesn't want the NAMES of those students who received a grade lower than 8. The report must be in descending order by grade -- i.e. higher grades are entered first. If there is more than one student with the same grade (8-10) assigned to them, order those particular students by their name alphabetically. Finally, if the grade is lower than 8, use "NULL" as their name and list them by their grades in descending order. If there is more than one student with the same grade (1-7) assigned to them, order those particular students by their marks in ascending order.
Write a query to help Eve.
-> 학생들의 성적을 grade 테이블에 기재된 등급표에 맞게 등급을 매겨서, 학생 이름, 학생 성적 등급, 학생 성적 순으로 출력하시오. 만약 학생 등급이 8 미만이라면 이름을 NULL로 변경하시오. 출력은 학생 등급이 높은 순으로 출력하고, 만약 등급이 같으면 이름 순, 이름도 같으면 성적 순으로 출력하시오.
Answer
select if( g.grade >= 8,s.name,NULL),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
* 학생 테이블과 등급 테이블을 join을 시켰는데 학생의 성적으로 등급의 min값과 max값에 맞게 join을 시켰다. 출력을 할 때는 학생의 등급이 8 미만일 때 NULL 값이 출력 되게끔 if문을 사용하였다. 마지막으로 등급이 높은순, 이름의 알파벳 순, 성적 순으로 정렬을 시켜서 출력을 하였다.
'Language > SQL' 카테고리의 다른 글
[HackerRank][SQL][JOIN] Advanced Join, SQL Project Planning - 컴도리돌이 (0) | 2022.06.03 |
---|---|
[HackerRank][SQL][JOIN] Basic Join, Top Competitors - 컴도리돌이 (0) | 2022.05.28 |
[HackerRank][SQL][JOIN] Average Population of Each Continent - 컴도리돌이 (0) | 2022.05.28 |
[HackerRank][SQL][JOIN] African Cities- 컴도리돌이 (0) | 2022.05.28 |
[HackerRank][SQL][Aggregation] Weather Observation Station 21 - 컴도리돌이 (0) | 2022.05.27 |