
개발자의 스킬별로 등급을 나누어 출력하라.
[언어별 개발자 분류하기(Level4)]
🔑 핵심 포인트
개발자의 등급 :
A : 파이썬과 하나이상의 프론트엔드 가능자
B : C# 가능자
C : 프론트엔드 가능자
비트연산자를 이용해 각 코드별 개발자 등급을 나누었다.
❗ SUM(CODE)를 이용하여 다중(프론트 엔드) 개발자를 찾을 수 있었다.
WHERE, ORDER BY를 GRADE로 할 수 없어 CTE를 이용하였다.
WITH CTE AS (SELECT CASE
WHEN SKILL_CODE & (SELECT CODE FROM SKILLCODES WHERE NAME = 'Python') > 0 AND
SKILL_CODE & (SELECT SUM(CODE) FROM SKILLCODES WHERE CATEGORY = 'Front End') > 0
THEN 'A'
WHEN SKILL_CODE & (SELECT CODE FROM SKILLCODES WHERE NAME = 'C#') > 0
THEN 'B'
WHEN SKILL_CODE & (SELECT SUM(CODE) FROM SKILLCODES WHERE CATEGORY = 'Front End') > 0
THEN 'C'
ELSE NULL END AS GRADE, ID, EMAIL
FROM DEVELOPERS)
SELECT *
FROM CTE
WHERE GRADE IS NOT NULL
ORDER BY GRADE, ID