본문 바로가기
PS/SQL

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

by nyrimmm 2024. 6. 19.

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


문제 설명

  • Lv 2 문제
  • 분화된 연도(YEAR), 분화된 연도별 대장균 크기의 편차(YEAR_DEV), 대장균 개체의 ID(ID) 출력
  • 분화된 연도별 대장균 크기의 편차(YEAR_DEV) = (분화된 연도별 가장 큰 대장균의 크기) - (각 대장균의 크기)
  • 결과는 연도 기준으로 오름차순, 연도가 같으면 대장균 크기의 편차 기준으로 오름차순 정렬

 

 

 

 

문제 풀이

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

 

◼️서브쿼리로 연도별로 분화된 대장균 중 가장 큰 대장균의 크기 구하기

    -  연도로 그룹화하고, MAX 함수로 가장 큰 대장균의 크기를 구한다.

    -  YEAR 함수로 DIFFERENTIATION_DATE 칼럼에서 연도 추출

 

◼️ 두 테이블을 JOIN 해서 연도별 대장균 크기의 편차 구하기

    -  ECOLI_DATA 테이블과 테이블을 INNER JOIN 한다.

    -  조인 조건은 두테이블의 YEAR 칼럼이 같다.

    -  JOIN 후, (MED.MAX_SIZE) - (ED.SIZE_OF_COLONY) 로 연도별 대장균 크기의 편차를 구한다.

 

◼️ ORDER BY YEAR 기준 오름차순, YEAR_DEV 기준 오름차순 정렬