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;