YataNox

[My_SQL] Lv.2 연도별 대장균 크기의 편차 구하기 본문

DB/Programmers SQL

[My_SQL] Lv.2 연도별 대장균 크기의 편차 구하기

에이디/김우진 2024. 11. 23. 17:12

문제

 

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

 

프로그래머스

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

programmers.co.kr

 

역시 프로그래머스는 LV이 믿을게 못된다.

편차를 구하는게 핵심인 문제이다.

1. 날짜에서 년도만 뽑아낸 서브컬럼을 가진 테이블(e)을 만든다.

2. 년도별 최고 크기 값의 서브컬럼을 가진 테이블(s)을 만든다.

3. 두 테이블을 조인하여 s 테이블의 최고 크기 값 - e테이블의 각 크기를 연산하여 편차값을 구한다.

코드

WITH YEAR_T AS(
    SELECT *, YEAR(DIFFERENTIATION_DATE) AS 'YEAR'
    FROM ECOLI_DATA
),
MAX_SIZE AS (
    SELECT YEAR(DIFFERENTIATION_DATE) AS 'YEAR', MAX(SIZE_OF_COLONY) AS 'MAX_SIZE_OF_COLONY'
    FROM ECOLI_DATA 
    GROUP BY YEAR
)
SELECT E.YEAR, (S.MAX_SIZE_OF_COLONY - E.SIZE_OF_COLONY) AS YEAR_DEV, E.ID
FROM YEAR_T E JOIN MAX_SIZE S ON E.YEAR = S.YEAR
ORDER BY 1 ASC, 2 ASC;