[SQL 문제 풀이] 분기별 분화된 대장균의 개체 수 구하기

프로그래머스 (299308)
Stupefyee's avatar
Mar 26, 2025
[SQL 문제 풀이] 분기별 분화된 대장균의 개체 수 구하기
notion image
 

내가 작성한 쿼리

Oracle

SELECT CONCAT(CASE WHEN MONTH(DIFFERENTIATION_DATE) <= 3 THEN 1 WHEN MONTH(DIFFERENTIATION_DATE) <= 6 THEN 2 WHEN MONTH(DIFFERENTIATION_DATE) <= 9 THEN 3 ELSE 4 END, 'Q') AS QUARTER, COUNT(ID) AS ECOLI_COUNT FROM ECOLI_DATA GROUP BY CONCAT(CASE WHEN MONTH(DIFFERENTIATION_DATE) <= 3 THEN 1 WHEN MONTH(DIFFERENTIATION_DATE) <= 6 THEN 2 WHEN MONTH(DIFFERENTIATION_DATE) <= 9 THEN 3 ELSE 4 END, 'Q') ORDER BY QUARTER;

MySQL

SELECT CONCAT(CASE WHEN MONTH(DIFFERENTIATION_DATE) <= 3 THEN 1 WHEN MONTH(DIFFERENTIATION_DATE) <= 6 THEN 2 WHEN MONTH(DIFFERENTIATION_DATE) <= 9 THEN 3 ELSE 4 END,'Q') AS QUARTER, COUNT(ID) AS ECOLI_COUNT FROM ECOLI_DATA GROUP BY QUARTER ORDER BY QUARTER

차이점

  • GROUP BY에서 별칭사용 가능의 여부
    • MySQL
      • 쿼리 최적화를 위해, GROUP BY 절에서 사용되는 별칭을 처리할 때 SELECT 구문과 같은 방식으로 해석 → MySQLGROUP BY를 처리할 때 별칭을 먼저 계산하고 이를 기반으로 그룹화 작업을 수행할 수 있도록 허용
      • 다른 RDBMS에서는 동작하지 않을 수 있음
    • Oracle: 불가 → 직접 명시
Share article

stupefyee