개발로그필름

[SQL] 연도별 대장균 크기의 편차 구하기 본문

coding test/프로그래머스

[SQL] 연도별 대장균 크기의 편차 구하기

yuullog 2025. 6. 12. 15:28
728x90
반응형
SMALL
반응형

 

 

 

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

 

프로그래머스

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

programmers.co.kr

 

 

정답 쿼리
-- 연도별 최대 크기 구하기
WITH MAX_SIZE AS (
    SELECT
        YEAR(DIFFERENTIATION_DATE) YEAR,
        MAX(SIZE_OF_COLONY) MAX_SIZE
    FROM ECOLI_DATA
    GROUP BY YEAR(DIFFERENTIATION_DATE)
)

SELECT
    YEAR(D.DIFFERENTIATION_DATE) AS YEAR,
    (M.MAX_SIZE - D.SIZE_OF_COLONY) AS YEAR_DEV,
    D.ID
FROM ECOLI_DATA D
JOIN MAX_SIZE M
    ON YEAR(D.DIFFERENTIATION_DATE) = M.YEAR
ORDER BY YEAR ASC, YEAR_DEV ASC;

 

 

오답노트
  • 계속 SELECT 안에서 MAX(SIZE_OF_COLONY) - SIZE_OF_COLONY 를 하려고 했다
  • MAX(SIZE_OF_COLONY)는 group by가 적용돼야 하는 구문이고 SIZE_OF_COLONY 는 아닌데 이렇게 하면 계속 0이 나올수밖에 없다
  • 따라서 둘이 분리해서 구해주는게 필요한데, 그래서 적용한게 WITH 구문
  • WITH 구문은 실무에도 많이 쓰이고 임시로 테이블을 만들어서 결과를 보고 수정이 편리한 구문이다
  • 그래서 먼저 with 구문으로 연도별 max 값 테이블을 만들어놓고
  • 원래의 ECOLI_DATA 테이블과 연도끼리 join 해서 SIZE_OF_COLONY을 빼서 편차 구해서 풀었다
  • with 구문 써서 푸는거 기억하기

 

 

 

반응형
LIST
Comments