자두의 데브로그

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

코딩테스트/SQL

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

왕자두 2024. 10. 10. 20:35

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

 

프로그래머스

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

programmers.co.kr

 

[새롭게 알게 된 것]

 

1. abs(): 절댓값 구하는 함수

-> 편차를 구하는 거니까 절댓값으로 나타내야한다

 

[문제 풀이 순서]

 

1. max()도 집계함수니까 group by로 묶어서 출력하면 연도별 가장 큰 사이즈 값을 알 수 있다.

 

2. 해당 테이블과 기존 테이블을 조인할 때 ed1에 해당하는 year은 on에서는 인식할 수 없어서 YEAR(ed1.DIFFERENTIATION_DATE) 로 비교해줘야 한다.

 

3. 결국 ed2.max_size를 꺼내서 기존의 size랑 비교하면 된다.

 

-- 코드를 작성해주세요
select YEAR(DIFFERENTIATION_DATE) as YEAR , abs(ed2.max_size - SIZE_OF_COLONY) as YEAR_DEV, ed1.ID
from ECOLI_DATA ed1
join (select year(DIFFERENTIATION_DATE) as year, max(SIZE_OF_COLONY) as max_size from ECOLI_DATA group by year) as ed2
on YEAR(ed1.DIFFERENTIATION_DATE) = ed2.year
order by YEAR, YEAR_DEV;