코딩테스트/lv2

[프로그래머스 코딩테스트] MySQL Lv.2 분기별 분화된 대장균의 개체 수 구하기

chantleman 2024. 7. 4. 15:53

 

문제 설명

 

대장균들은 일정 주기로 분화하며, 분화를 시작한 개체를 부모 개체, 분화가 되어 나온 개체를 자식 개체라고 합니다.

다음은 실험실에서 배양한 대장균들의 정보를 담은 ECOLI_DATA 테이블입니다.

 

ID : 대장균 개체의 ID

PARENT_ID : 부모 개체의 ID

SIZE_OF_COLONY : 개체의 크기 

DIFFERENTIATION_DATE : 분화되어 나온 날짜

GENOTYPE : 개체의 형질

 

최초의 대장균 개체의 PARENT_ID는 NULL값

 


문제

 

각 분기(QUARTER)별 분화된 대장균의 개체의 총 수(ECOLI_COUNT)를 출력하는 SQL문을 작성해주세요. 이때 각 분기에는 'Q'를 붙이고 분기에 대해 오름차순으로 정렬해주세요. 대장균 개체가 분화되지 않은 분기는 없습니다.

 

 

 예를 들어 ECOLI_DATA 테이블이 다음과 같다면

 

각 분기별로 분화된 대장균 개체는 다음과 같습니다.

1분기 : ID1, ID3

2분기 : ID2, ID4

3분기 : ID5

4분기 : ID6

 

따라서 결과는 다음과 같아야 합니다.

 

 


풀이

 

    select 
        case 
            when month(differentiation_date)<=3 then '1Q'
            when month(differentiation_date)<=6 then '2Q'
            when month(differentiation_date)<=9 then '3Q'
            else '4Q' 
            end as quarter, 
        count(*) as ecoli_count 
    from ecoli_data 
    group by quarter order by quarter;

 

 

case문은 end로 끝남

 

case (when 조건문 then 출력결과) end