프로그래머스/My SQL

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

싱싱한복초이 2024. 11. 21. 00:27

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

 

프로그래머스

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

programmers.co.kr

[문제]

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

 

[나의 풀이]

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

 

[다른 풀이]

 

window 함수를 이용한 경우

SELECT 
    YEAR(DIFFERENTIATION_DATE) AS YEAR, 
    MAX(SIZE_OF_COLONY) OVER (PARTITION BY YEAR(DIFFERENTIATION_DATE)) - SIZE_OF_COLONY AS YEAR_DEV, 
    ID
FROM ECOLI_DATA
ORDER BY YEAR, YEAR_DEV;