[SQL] HackerRank - The Report

LOSSS·2021년 1월 13일
0

SQL

목록 보기
8/8
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;

0개의 댓글