Programmers lv4. 언어별 개발자 분류하기
WITH FE AS (
SELECT SUM(CODE) AS SKILL_CODE
-- SELECT BIT_OR(CODE) AS SKILL_CODE 도 가능
FROM SKILLCODES
WHERE CATEGORY = 'Front End'
)
-- FE.SKILL_CODE 에는 Front End 기술을 모두 표현해놓은 값이 들어있음
SELECT
CASE
WHEN DEV.SKILL_CODE & FE.SKILL_CODE
AND DEV.SKILL_CODE & (SELECT CODE FROM SKILLCODES WHERE NAME = 'Python')
THEN 'A'
WHEN DEV.SKILL_CODE & (SELECT CODE FROM SKILLCODES WHERE NAME = 'C#')
THEN 'B'
WHEN DEV.SKILL_CODE & FE.SKILL_CODE
THEN 'C'
ELSE NULL
END AS GRADE
, ID
, EMAIL
FROM
DEVELOPERS DEV
, FE