강의로 돌아가기
김상혁

[MYSQL] WHEN THEN 풀이 공유

WITH front_end AS (SELECT SUM(CODE)
                FROM SKILLCODES
                WHERE CATEGORY = 'Front End')

SELECT CASE 
    WHEN SKILL_CODE & (SELECT * FROM front_end) 
        AND SKILL_CODE & (SELECT CODE FROM SKILLCODES WHERE NAME = 'python')
        THEN 'A'
    WHEN SKILL_CODE & (SELECT CODE FROM SKILLCODES WHERE NAME = 'C#') 
        THEN 'B'
    WHEN SKILL_CODE & (SELECT * FROM front_end)
        THEN 'C'
    END AS GRADE, ID, EMAIL
FROM DEVELOPERS
GROUP BY GRADE, ID, EMAIL
HAVING GRADE IS NOT NULL
ORDER BY GRADE, ID
  • 쿠우우웅

    안녕하세요! 혹시 with 절에서 sum(code)인 이유가 있을까요? 저는 code로 했을 때 틀렸는데 이유가 궁금해서요!

    쿠우우웅―2024.03.15 18:57
  • 김상혁

    안녕하세요! 늦게 봐서 답변이 늦었네요 ㅠㅠ 해당 코드를 이해하시기 위해서는 2진법과 '&' 연산에 대해 학습해보시면 알 수 있으실 겁니다! 그리고 테이블에서 CODE가 2의 제곱수로 표현되어 있기에 SUM으로 해도 가능한 것입니다!

    김상혁―2024.03.16 20:00
  • 도리도리

    이 코드대로 하면, 테스트케이스는 다 통과하는데 틀렸다고 나오네요ㅠㅠ 틀린 부분이 없어보이는데.. 왜그럴까요

    도리도리―2024.03.20 00:32
  • 잉응

    C# 스킬 가진 개발자 b는 카테고리가 백엔드인데 왜 WITH절에 프론트엔드로 설정하는건가요?ㅠㅠㅠㅠ

    잉응―2024.05.03 15:49
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다.