코딩테스트

[26.02.23 코테(MySQL)]-연도별 대장균 크기의 편차 구하기

지니248 2026. 2. 23. 15:39

Lv2. 연도별 대장균 크기의 편차 구하기 (MySQL)

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

 

내가 작성한 코드

-- 풀이1 (서브쿼리JOIN)
SELECT M.YEAR, (M.MAX_SIZE - E.SIZE_OF_COLONY) AS YEAR_DEV, E.ID
FROM (SELECT YEAR(DIFFERENTIATION_DATE) AS YEAR ,MAX(SIZE_OF_COLONY) AS MAX_SIZE
      FROM ECOLI_DATA
      GROUP BY YEAR) M
JOIN ECOLI_DATA AS E
  ON M.YEAR = YEAR(E.DIFFERENTIATION_DATE)
ORDER BY YEAR ASC, YEAR_DEV ASC;

-- 풀이2 (윈도우함수)
SELECT YEAR(DIFFERENTIATION_DATE) AS YEAR, 
       (MAX(SIZE_OF_COLONY) OVER (PARTITION BY YEAR(DIFFERENTIATION_DATE)) - SIZE_OF_COLONY) AS YEAR_DEV,
       ID
       -- 연도별로 그룹을 나눔 (PARTITION BY)
       -- 같은 연도(DIFFERENTIATION_DATE의 YEAR)안에서만
       -- SIZE_OF_COLONY의 최대값 계산
       -- 계산된 최대값에서 개체의 크기(SIZE_OF_COLONY)를 빼줌
FROM ECOLI_DATA
ORDER BY YEAR ASC, YEAR_DEV ASC;