



* 문제해설
스킬 코드 값이 고정되어 있지 않기 때문에, Python, C#, Front End에 해당하는 코드 값을 SKILLCODES 테이블에서 동적으로 조회해 사용해야 한다.
WITH 절(CTE)을 사용하여 각 필요한 코드 값을 미리 추출하고, 메인 쿼리에서 해당 값을 비트 연산자 &와 함께 사용하여 조건을 분기하면 된다.
WITH CODE_ AS (
SELECT
(SELECT BIT_OR(CODE) FROM SKILLCODES WHERE CATEGORY = 'Front End') AS FRONT_END,
(SELECT BIT_OR(CODE) FROM SKILLCODES WHERE NAME = 'Python') AS PYTHON,
(SELECT BIT_OR(CODE) FROM SKILLCODES WHERE NAME = 'C#') AS CSHARP
),
CTE AS (
SELECT
CASE
WHEN SKILL_CODE & c.FRONT_END > 0 AND SKILL_CODE & c.PYTHON > 0 THEN 'A'
WHEN SKILL_CODE & c.CSHARP > 0 THEN 'B'
WHEN SKILL_CODE & c.FRONT_END > 0 THEN 'C'
END AS GRADE,
ID, EMAIL
FROM DEVELOPERS, CODE_ c
)
SELECT *
FROM CTE
WHERE GRADE IS NOT NULL
ORDER BY GRADE, ID;'💻 프로그래밍 > 프로그래머스' 카테고리의 다른 글
| 프로그래머스 - 물고기 종류 별 잡은 수 구하기 (0) | 2025.04.18 |
|---|---|
| 프로그래머스 - 조건에 맞는 사원 정보 조회하기 (0) | 2025.04.10 |
| 프로그래머스 - 가격대 별 상품 개수 구하기 (0) | 2025.04.05 |
| 프로그래머스 - 입양 시각 구하기(2) (0) | 2025.04.05 |
| 프로그래머스 - 입양 시각 구하기(1) (0) | 2025.04.05 |