<๋ฌธ์ >
<์๋ณธ ๋ฌธ์ : HackerRank The Report>
์ํ์ด ๋๋ฌ๋ค. ํ์ง๋ง ๋ถํํ๋ ๋น์ ์ ํ๊ต ์ ์๋์ด๋ค. ์์ด๋ค์ด ๊ฐ๋ฒผ์ด ๋ง์์ผ๋ก ํ๊ตํ๋ ๊ฒ๊ณผ ๋ณ๊ฐ๋ก ๋น์ ์ ์ฑ์ ๋ ์ ์ ๊ธฐ์ค์ผ๋ก ์์ด๋ค์ ๋ฑ๊ธ์ ๋งค๊ฒจ์ผ ํ ์ค์ํ ์ฑ ๋ฌด๋ฅผ ์ํํด์ผ ํ๋ค. ๋น์ ์์๋ Students ํ ์ด๋ธ๊ณผ Grades ํ ์ด๋ธ์ด ๋์ฌ ์๋ค. ํ๋๋ ํ์์ ์ด๋ฆ๊ณผ ์ ์๊ฐ ๋ค์ด ์๋ ํ ์ด๋ธ์ด๊ณ ๋๋จธ์ง ํ๋๋ ์ ์๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์์ ๊ทธ๋ฃน ๋๋๋ ๋ฑ๊ธ ํ ์ด๋ธ์ด๋ค. ๋ ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ ๊ฐ์ง๋ค. ๋น๊ต์ ๋ ์ฝ์งํ๊ณ ์์ด๋ค์ ๋ฑ๊ธ์ ๋งค๊ธธ ์ฟผ๋ฆฌ๋ฅผ ์งค ๋ฐฉ๋ฒ์ ์์๊น.
<ํ์ด>
๋ฌผ๋ก ์ ๋ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก CASE WHEN์ผ๋ก ์ผ์ผ์ด ์ง์ ํด์ฃผ๋ ๋ฐฉ๋ฒ๋ ์๊ฒ ์ง๋ง, MIN ๊ฐ๊ณผ MAX ๊ฐ์ด ์๋ ํ ์ด๋ธ์ด ์ด๋ ๊ฒ ์์๊ฒ ์๋ค๋ฉด LEFT JOIN์ผ๋ก ๋ฌถ๊ณ BETWEEN๋ง ๊ฑธ์ด ์ค๋ ์ ์ฒด ๋ฑ๊ธ์ ๋ฝ์ ์ ์๋ค. LEFT JOIN์ INNER JOIN๊ณผ ๋ค๋ฅด๊ฒ ๋ ํ ์ด๋ธ์ ๋์ผํ ๊ฐ์ด ์์ด๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฏ๋ก, ์ผ๋จ ์์ ๋ถ์ฌ ๋๊ณ ๊ฐ์ ํ ์ด๋ธ์ ์๋ ๊ฒ์ฒ๋ผ ์ฐ์ฐ์๋ง ๋ฝ์ ์ฐ๋ ๊ฒ์ด๋ค.
SELECT IF(Grade < 8, NULL, Name), g.Grade, s.Marks
FROM Students s
LEFT JOIN Grades g ON s.Marks BETWEEN g.Min_Mark AND g.Max_Mark
ORDER BY Grade DESC, Name, Marks