코딩테스트 연습 > SUM, MAX, MIN > 연도별 대장균 크기의 편차 구하기
연도별 대장균 크기의 편차 구하기 Lv.2
대장균들은 일정 주기로 분화하며, 분화를 시작한 개체를 부모 개체, 분화가 되어 나온 개체를 자식 개체라고 합니다.
다음은 실험실에서 배양한 대장균들의 정보를 담은 ECOLI_DATA 테이블입니다.
ECOLI_DATA 테이블의 구조는 다음과 같으며, ID, PARENT_ID, SIZE_OF_COLONY, DIFFERENTIATION_DATE, GENOTYPE 은 각각 대장균 개체의 ID, 부모 개체의 ID, 개체의 크기, 분화되어 나온 날짜, 개체의 형질을 나타냅니다.
최초의 대장균 개체의 PARENT_ID 는 NULL 값입니다.
분화된 연도(YEAR), 분화된 연도별 대장균 크기의 편차(YEAR_DEV), 대장균 개체의 ID(ID) 를 출력하는 SQL 문을 작성해주세요. 분화된 연도별 대장균 크기의 편차는 분화된 연도별 가장 큰 대장균의 크기 - 각 대장균의 크기로 구하며 결과는 연도에 대해 오름차순으로 정렬하고 같은 연도에 대해서는 대장균 크기의 편차에 대해 오름차순으로 정렬해주세요.
첫 번째 풀이 : 100점
SELECT YEAR(A.DIFFERENTIATION_DATE) AS YEAR, (B.SIZE - A.SIZE_OF_COLONY) AS YEAR_DEV, ID
FROM ECOLI_DATA AS A
LEFT JOIN (SELECT YEAR(DIFFERENTIATION_DATE) AS YEAR, MAX(SIZE_OF_COLONY) AS SIZE
FROM ECOLI_DATA
GROUP BY YEAR(DIFFERENTIATION_DATE)) AS B
ON YEAR(A.DIFFERENTIATION_DATE)=B.YEAR
ORDER BY YEAR, YEAR_DEV
- LEFT JOIN으로 TABLE B을 하나 더 만들어서 SELECT
- GROUP BY 로 YEAR별로 묶음
'코딩테스트 | SQL > 프로그래머스' 카테고리의 다른 글
| [프로그래머스 | SQL] 이름이 없는 동물의 아이디 (0) | 2024.04.16 |
|---|---|
| [프로그래머스 | SQL] 경기도에 위치한 식품창고 목록 출력하기 (0) | 2024.04.16 |
| [프로그래머스 | SQL] 잡은 물고기 중 가장 큰 물고기의 길이 구하기 (0) | 2024.04.16 |
| [프로그래머스 | SQL] 강원도에 위치한 생산공장 목록 출력하기 (0) | 2024.03.20 |
| [프로그래머스 | SQL] 이름이 있는 동물의 아이디 (0) | 2024.03.20 |