inblog logo
|
silver
    SQL문제풀기

    [SQL문제풀기] 언어별 개발자 분류하기

    silver's avatar
    silver
    Jun 21, 2025
    [SQL문제풀기] 언어별 개발자 분류하기
    Contents
    문제MYSQL

    문제

    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/276036

    MYSQL

    내가 작성한 정답

    WITH SKILLS AS (SELECT D.ID, GROUP_CONCAT(S.CATEGORY) CATEGORY, GROUP_CONCAT(S.NAME) NAME FROM DEVELOPERS D JOIN SKILLCODES S ON (D.SKILL_CODE & S.CODE) = S.CODE GROUP BY ID), GRADES AS (SELECT CASE WHEN CATEGORY LIKE '%Front End%' AND NAME LIKE '%Python%' THEN 'A' WHEN NAME LIKE '%C#%' THEN 'B' WHEN CATEGORY LIKE '%Front End%' THEN 'C' END GRADE, ID FROM SKILLS) SELECT G.GRADE, G.ID, D.EMAIL FROM GRADES G JOIN DEVELOPERS D ON G.ID = D.ID WHERE GRADE IS NOT NULL ORDER BY 1,2;
    💡

    GROUP_CONCAT()

    : GROUP BY 결과를 하나의 문자열로 합쳐줌
    SELECT 그룹기준컬럼, GROUP_CONCAT(합칠컬럼 SEPARATOR '구분자') AS 별칭 FROM 테이블명 GROUP BY 그룹기준컬럼; // 구분자 안쓰면 ,로 자동설정됨 GROUP_CONCAT(DISTINCT NAME ORDER BY NAME SEPARATOR ', ')
    🧚‍♂️ORACLE에서는
    LISTAGG(NAME, '구분자') WITHIN GROUP (ORDER BY NAME)
    를 사용한다
    Share article

    silver

    RSS·Powered by Inblog