Algorithm/Programmers SQL

[MySQL] 프로그래머스 분기별 분화된 대장균의 개체 수 구하기

제우제우 2024. 9. 7. 12:54

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

 

프로그래머스

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

programmers.co.kr

코딩테스트 연습 > String, Date >분기별 분화된 대장균의 개체 수 구하기

문제 분석

난이도: LEVEL2

문제 요구사항

각 분기(QUARTER)별 분화된 대장균의 개체의 총 수(ECOLI_COUNT)를 출력하는 SQL 문을 작성해주세요. 

이때 각 분기에는 'Q' 를 붙이고 분기에 대해 오름차순으로 정렬해주세요. 대장균 개체가 분화되지 않은 분기는 없습니다.

 

CASE 사용해서 분기 분리하기 

1분기: 1 ~ 3 (월)

2분기: 4 ~ 6 (월)

3분기: 7 ~ 9 (월)

4분기: 10 ~ 12 (월)

(CASE 
    WHEN MONTH(DIFFERENTIATION_DATE) BETWEEN 1 AND 3 THEN '1Q'
    WHEN MONTH(DIFFERENTIATION_DATE) BETWEEN 4 AND 6 THEN '2Q'
    WHEN MONTH(DIFFERENTIATION_DATE) BETWEEN 7 AND 9 THEN '3Q'
    ELSE '4Q'
 END) QUARTER

 

분기를 기준으로 묶어서 COUNT 하기 

COUNT(*) ECOLI_COUNT
FROM ECOLI_DATA
GROUP BY QUARTER

정답 코드 

SELECT 
(CASE 
    WHEN MONTH(DIFFERENTIATION_DATE) BETWEEN 1 AND 3 THEN '1Q'
    WHEN MONTH(DIFFERENTIATION_DATE) BETWEEN 4 AND 6 THEN '2Q'
    WHEN MONTH(DIFFERENTIATION_DATE) BETWEEN 7 AND 9 THEN '3Q'
    ELSE '4Q'
 END) QUARTER, 
COUNT(*) ECOLI_COUNT
FROM ECOLI_DATA
GROUP BY QUARTER
ORDER BY QUARTER ASC