1. ๋ฌธ์ ์ค๋ช
SKILLCODES ํ ์ด๋ธ์ ๊ฐ๋ฐ์๋ค์ด ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํ ์ ๋ณด๋ฅผ ๋ด์ ํ ์ด๋ธ์ ๋๋ค. SKILLCODES ํ ์ด๋ธ์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, NAME, CATEGORY, CODE๋ ๊ฐ๊ฐ ์คํฌ์ ์ด๋ฆ, ์คํฌ์ ๋ฒ์ฃผ, ์คํฌ์ ์ฝ๋๋ฅผ ์๋ฏธํฉ๋๋ค. ์คํฌ์ ์ฝ๋๋ 2์ง์๋ก ํํํ์ ๋ ๊ฐ bit๋ก ๊ตฌ๋ถ๋ ์ ์๋๋ก 2์ ์ ๊ณฑ์๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.

DEVELOPERS ํ ์ด๋ธ์ ๊ฐ๋ฐ์๋ค์ ํ๋ก๊ทธ๋๋ฐ ์คํฌ ์ ๋ณด๋ฅผ ๋ด์ ํ ์ด๋ธ์ ๋๋ค. DEVELOPERS ํ ์ด๋ธ์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, ID, FIRST_NAME, LAST_NAME, EMAIL, SKILL_CODE๋ ๊ฐ๊ฐ ๊ฐ๋ฐ์์ ID, ์ด๋ฆ, ์ฑ, ์ด๋ฉ์ผ, ์คํฌ ์ฝ๋๋ฅผ ์๋ฏธํฉ๋๋ค. SKILL_CODE ์ปฌ๋ผ์ INTEGER ํ์ ์ด๊ณ , 2์ง์๋ก ํํํ์ ๋ ๊ฐ bit๋ SKILLCODES ํ ์ด๋ธ์ ์ฝ๋๋ฅผ ์๋ฏธํฉ๋๋ค.

์๋ฅผ ๋ค์ด ์ด๋ค ๊ฐ๋ฐ์์ SKILL_CODE๊ฐ 400 (=b'110010000')์ด๋ผ๋ฉด, ์ด๋ SKILLCODES ํ
์ด๋ธ์์ CODE๊ฐ 256 (=b'100000000'), 128 (=b'10000000'), 16 (=b'10000') ์ ํด๋นํ๋ ์คํฌ์ ๊ฐ์ก๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
DEVELOPERS ํ
์ด๋ธ์์ Front End ์คํฌ์ ๊ฐ์ง ๊ฐ๋ฐ์์ ์ ๋ณด๋ฅผ ์กฐํํ๋ ค ํฉ๋๋ค. ์กฐ๊ฑด์ ๋ง๋ ๊ฐ๋ฐ์์ ID, ์ด๋ฉ์ผ, ์ด๋ฆ, ์ฑ์ ์กฐํํ๋ SQL ๋ฌธ์ ์์ฑํด ์ฃผ์ธ์. ๊ฒฐ๊ณผ๋ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด ์ฃผ์ธ์.
2. ์ถ๋ ฅ ์์

3. ๋ฌธ์ ๋ต์
# ๊ฐ ์๋ฆฌ์ ํด๋นํ๋ ์คํฌ์ด ์๋์ง ๋นํธ์ฐ์ฐ์(&)๋ก ํ์ธ
# ๋นํธ์ฐ์ฐ์๋ฅผ ์ฐ๋ฉด 10์ง์ -> 2์ง์ ๋นํธ๋ก ๋น๊ต
SELECT DISTINCT
d.id,
d.email,
d.first_name,
d.last_name
FROM developers d
JOIN skillcodes s
ON s.category = 'Front End'
WHERE (d.skill_code & s.code) > 0
ORDER BY d.id;2์ง์ ๊ณ์ฐํ ๋๋ ๋นํธ ์ฐ์ฐ์(&) ํ์ฉํ๊ธฐ..