공부 일지/문제풀이
[프로그래머스] 연도별 대장균 크기의 편차 구하기 (MySQL)
Joshbla
2024. 11. 26. 23:29
코딩테스트 연습 - 연도별 대장균 크기의 편차 구하기
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/299310
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 설명
다음과 같이 대장균의 정보가 주어진다.
1. 연도별로 가장 SIZE_OF_COLONY가 큰 값을 구한다. =>MAX_SIZE라고 지칭
2. 각 대장균마다 해당되는 MAX_SIZE에서 자신의 SIZE_OF_COLONY를 빼서 YEAR_DEV라고 지칭한다.
3. YEAR_DEV 오름차순정렬, ID 오름차순 정렬
문제 풀이
생각 과정
우선 연도별 가장 큰 대장균의 크기부터 구했다.
-- 연도별 가장 큰 대장균의 크기
SELECT MAX(SIZE_OF_COLONY) FROM ECOLI_DATA
GROUP BY DATE_FORMAT("%Y",DIFFERENTIATION_DATE)
그리고 위의 구문을 서브쿼리로 사용하기로 했다.
구현
SELECT
YEAR(DIFFERENTIATION_DATE) AS YEAR,
(
(
SELECT
MAX(SIZE_OF_COLONY)
FROM
ECOLI_DATA
WHERE
YEAR = YEAR(DIFFERENTIATION_DATE)
GROUP BY
YEAR(DIFFERENTIATION_DATE)
) - SIZE_OF_COLONY
) AS YEAR_DEV,
ID
FROM
ECOLI_DATA
ORDER BY
YEAR ASC,
YEAR_DEV ASC;
주의점
처음엔 아래와 같이 제출했는데 계속 오답처리가 돼서 LEFT가 아니라 YEAR을 사용하니 통과가 됐다.
정답을 확인할 때 타입도 확인하는 것 같다. (DATE_FORMAT도 오답처리가 된다.)
SELECT
LEFT(DIFFERENTIATION_DATE,4) AS YEAR,... (오답)
SELECT
YEAR(DIFFERENTIATION_DATE) AS YEAR,... (통과)