본문 바로가기

Algorithm/[프로그래머스] - MySQL

[프로그래머스] LV.2 연도별 대장균 크기의 편차 구하기

 

 

문제


분화된 연도(YEAR), 분화된 연도별 대장균 크기의 편차(YEAR_DEV), 대장균 개체의 ID(ID) 를 출력하는 SQL 문을 작성해주세요. 분화된 연도별 대장균 크기의 편차는 분화된 연도별 가장 큰 대장균의 크기 - 각 대장균의 크기로 구하며 결과는 연도에 대해 오름차순으로 정렬하고 같은 연도에 대해서는 대장균 크기의 편차에 대해 오름차순으로 정렬해주세요.

 

 

풀이

1. GROUP BY로 분화된 연도별로 묶는다.
2. MAX로 연도 중 가장 큰 대장균의 크기를 구한다.
3. 1,2를 TABLE B라고 칭하고, 기본 ECOLI_DATA 테이블과 JOIN한다.
4. 분화된 연도, 연도별 대장균 크기의 편차, 개체의 ID를 SELECT한다.
5. 조건에 맞게 정렬한다.

 

SELECT B.YEAR, B.MAX - A.SIZE_OF_COLONY AS YEAR_DEV, A.ID
FROM ECOLI_DATA A
JOIN 
(
    SELECT YEAR(DIFFERENTIATION_DATE) AS YEAR, MAX(SIZE_OF_COLONY) AS MAX
    FROM ECOLI_DATA
    GROUP BY YEAR
    ) B
    ON YEAR(A.DIFFERENTIATION_DATE) = B.YEAR
ORDER BY B.YEAR, YEAR_DEV