본문 바로가기

DB/Programmers SQL Kit

[My_SQL] Lv.4 언어별 개발자 분류하기

문제

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

처음엔 WITH절들을 이용해서 각 GRADE에 의해 하나하나 구한 뒤 UNION작업을 통해 합쳐주었지만 코드가 너무 길었고 비효율적이었다. 

아래 블로그에서 좀 더 좋은 코드를 발견하여 공유한다.

 

GROUP BY - [언어별 개발자 분류하기] _ LEVEL 4

해당 문제는 원래 9주차에 풀었던 문제지만, 풀이 과정에 대한 자세한 설명이 필요해 따로 포스팅한다프로그래머스 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/276036[ 문제 ]SKILLCODES 

ddunddan.tistory.com

 

코드

SELECT 
    CASE WHEN (GROUP_CONCAT(NAME) LIKE "%Python%") AND MAX(CATEGORY) = "Front End" THEN 'A'
        WHEN GROUP_CONCAT(NAME) LIKE "%C#%" THEN 'B'
        WHEN MAX(CATEGORY) = "Front End" THEN 'C'
        ELSE NULL END AS GRADE
    ,ID 
    ,MIN(EMAIL) AS EMAIL
FROM DEVELOPERS d
JOIN SKILLCODES s ON d.SKILL_CODE & s.CODE
GROUP BY ID
HAVING GRADE IS NOT NULL
ORDER BY 1,2;