IT/SQL 테스트

[SUM, MAX, MIN] 연도별 대장균 크기의 편차 구하기 (MySQL)

자연산 금붕어 2025. 2. 21. 09:25

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

 

프로그래머스

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

programmers.co.kr

 

 

- 문제 :

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

 

- 풀이 :

  • MySQL
    • 내부 서브쿼리에서 연도별 최대 대장균 크기를 계산
    • 메인 쿼리에서 서브쿼리와 조인하여 각 개체의 크기 편차를 계산
-- ECOLI_DATA : ID, PARENT_ID, SIZE_OF_COLONY, DIFFERENTIATION_DATE, GENOTYPE

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

 

반응형