문제
처음엔 WITH절들을 이용해서 각 GRADE에 의해 하나하나 구한 뒤 UNION작업을 통해 합쳐주었지만 코드가 너무 길었고 비효율적이었다.
아래 블로그에서 좀 더 좋은 코드를 발견하여 공유한다.
코드
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;
'DB > Programmers SQL Kit' 카테고리의 다른 글
[My_SQL] Lv.5 멸종위기의 대장균 찾기 (0) | 2024.06.17 |
---|---|
[My_SQL] Lv.4 우유와 요거트가 담긴 장바구니 (0) | 2024.06.10 |
[My_SQL] Lv.4 취소되지 않은 진료 예약 조회하기 (0) | 2024.06.10 |
[My_SQL] Lv.4 연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기 (0) | 2024.06.10 |
[My_SQL] Lv.3 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기 (0) | 2024.06.10 |