https://school.programmers.co.kr/learn/courses/30/lessons/276036
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 풀이
- DEVELOPERS 테이블과 SKILLCODES 테이블을 조인한다. 이때 ON 조건에 CODE와 SKILL_CODE를 AND 연산하면 SKILL_CODE에 해당하는 모든 CODE를 가져올 수 있다.
- ID와 EMAIL을 기준으로 그룹핑한다. 이때 아무런 GRADE를 가지고 있지 않은 행이 있을 수 있기 때문에 HAVING절에서 필터링해준다.
- GRADE와 ID, EMAIL을 조회한다. GRADE는 GROUP_CONCAT 키워드를 사용해서 그룹핑된 행끼리 CATEGORY와 NAME을 합친 문자열을 기준으로 LIKE와 함께 A, B 또는 C인지 판단한다.
- GRADE와 ID를 기준으로 오름차순 정렬한다.
SELECT
CASE
WHEN GROUP_CONCAT(S.CATEGORY) LIKE '%Front End%' AND
GROUP_CONCAT(S.NAME) LIKE '%Python%' THEN "A"
WHEN GROUP_CONCAT(S.NAME) LIKE '%C#%' THEN "B"
WHEN GROUP_CONCAT(S.CATEGORY) LIKE '%Front End%' THEN "C"
END AS GRADE,
D.ID,
D.EMAIL
FROM
DEVELOPERS AS D
JOIN SKILLCODES AS S ON D.SKILL_CODE & S.CODE
GROUP BY
ID, EMAIL
HAVING GRADE IS NOT NULL
ORDER BY
1, 2'SQL > GROUP BY' 카테고리의 다른 글
| [프로그래머스 SQL] Lv.4 - 연간 평가점수에 해당하는 평가 등급 및 성과금조회하기 (0) | 2025.04.14 |
|---|---|
| [프로그래머스 SQL] Lv.4 - 입양 시각 구하기(2) (0) | 2025.04.03 |
| [프로그래머스 SQL] Lv.4 - 년,월,성별 별 상품 구매 회원 수 구하기 (1) | 2025.04.01 |
| [프로그래머스 SQL] Lv.4 - 식품분류별 가장 비싼 식품의 정보 조회하기 (0) | 2025.03.31 |
| [프로그래머스 SQL] Lv.4 - 저자 별 카테고리 별 매출액 집계하기 (0) | 2025.03.29 |