코딩테스트/SQL

[SQL][CASE-WHEN, MONTH] 분기별 분화된 대장균의 개체 수 구하기

박소민 2024. 11. 1. 23:35
분기별 분화된 대장균의 개체 수 구하기
 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

  • 내 풀이
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 AS QUARTER,
    COUNT(*) AS ECOLI_COUNT
FROM ECOLI_DATA
GROUP BY 1
ORDER BY 1

 

  • 분기 계산 다르게 하는 법
    • 월/3 한 값을 CEIL 하면 
    • 1,2, 3 => 0.XX, 1 -> 1
    • 4,5,6=> 1.XX, 2 -> 2
    • 7,8,9 => 2.XX, 3 -> 3
    • 10,11,12=> 3.XX, 4 -> 4
SELECT
    CONCAT(CEIL(MONTH(DIFFERENTIATION_DATE) / 3), 'Q') QUARTER
    , COUNT(ID) ECOLI_COUNT
FROM
    ECOLI_DATA
GROUP BY 1
ORDER BY 1