SELECT IF(GRADE < 8, NULL, NAME), GRADE, MARKS
FROM STUDENTS JOIN GRADES
WHERE MARKS BETWEEN MIN_MARK AND MAX_MARK
ORDER BY GRADE DESC, NAME
왜 이런 답이 나오냐면
⬇⬇⬇⬇⬇⬇
SELECT *
FROM STUDENTS JOIN GRADES
를 하면
19 Samantha 87 10 90 100
19 Samantha 87 9 80 89
19 Samantha 87 8 70 79
19 Samantha 87 7 60 69
19 Samantha 87 6 50 59
19 Samantha 87 5 40 49
19 Samantha 87 4 30 39
19 Samantha 87 3 20 29
19 Samantha 87 2 10 19
19 Samantha 87 1 0 9
21 Julia 96 10 90 100
21 Julia 96 9 80 89
21 Julia 96 8 70 79
21 Julia 96 7 60 69
이런 식으로 테이블이 나온다
근데 여기서 점수가 속한 진짜 GRADE 를 알아야 하니깐
WHERE GRADE BETWEEN MIN_MARK AND MAX_MARK
를 쓰는 것이다 ㅎ_ㅎ
나는 BETWEEN 이 아닌 IN 으로 하는 실수를 범해버렸다
여기선 IN 이 아닌 BETWEEN 을 써야할 것 ~~~ !
select if(g.grade < 8, null, name) as n, g.grade, s.marks
from students s, grades g
where marks between g.min_mark and g.max_mark
order by g.grade desc, n;