티스토리 뷰

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

 

프로그래머스

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

programmers.co.kr

문제풀이

1. 먼저 연도별 가장 큰 대장균의 크기(MAX_SIZE)를 구한다.

SELECT MAX(SIZE_OF_COLONY) AS MAX_SIZE, YEAR(DIFFERENTIATION_DATE) AS YEAR
FROM ECOLI_DATA 
GROUP BY YEAR

 

2. 1번 테이블(T)과 ECOLI_DATA 테이블을 조인하여, 각 대장균의 크기 편차를 구한다.

  • ECOLI_DATA 테이블에 없는 연도로 조인해야 하므로, LEFT JOIN을 사용하자.
SELECT T.YEAR, (T.MAX_SIZE - SIZE_OF_COLONY) AS YEAR_DEV, ID
FROM ECOLI_DATA E
LEFT JOIN T
ON YEAR(E.DIFFERENTIATION_DATE) = T.YEAR

 

3. 연도(YEAR)와 편차(YEAR_DEV)로 오름차순 정렬한다.

SELECT T.YEAR, (T.MAX_SIZE - SIZE_OF_COLONY) AS YEAR_DEV, ID
FROM ECOLI_DATA E
LEFT JOIN T
ON YEAR(E.DIFFERENTIATION_DATE) = T.YEAR
ORDER BY T.YEAR, YEAR_DEV; -- 정렬 추가

전체 코드

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

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함