Lv2. 연도별 대장균 크기의 편차 구하기 (MySQL)
링크: https://school.programmers.co.kr/learn/courses/30/lessons/299310
내가 작성한 코드
-- 풀이1 (서브쿼리JOIN)
SELECT M.YEAR, (M.MAX_SIZE - E.SIZE_OF_COLONY) AS YEAR_DEV, E.ID
FROM (SELECT YEAR(DIFFERENTIATION_DATE) AS YEAR ,MAX(SIZE_OF_COLONY) AS MAX_SIZE
FROM ECOLI_DATA
GROUP BY YEAR) M
JOIN ECOLI_DATA AS E
ON M.YEAR = YEAR(E.DIFFERENTIATION_DATE)
ORDER BY YEAR ASC, YEAR_DEV ASC;
-- 풀이2 (윈도우함수)
SELECT YEAR(DIFFERENTIATION_DATE) AS YEAR,
(MAX(SIZE_OF_COLONY) OVER (PARTITION BY YEAR(DIFFERENTIATION_DATE)) - SIZE_OF_COLONY) AS YEAR_DEV,
ID
-- 연도별로 그룹을 나눔 (PARTITION BY)
-- 같은 연도(DIFFERENTIATION_DATE의 YEAR)안에서만
-- SIZE_OF_COLONY의 최대값 계산
-- 계산된 최대값에서 개체의 크기(SIZE_OF_COLONY)를 빼줌
FROM ECOLI_DATA
ORDER BY YEAR ASC, YEAR_DEV ASC;
'코딩테스트' 카테고리의 다른 글
| [26.02.25 코테(MySQL)]-업그레이드 된 아이템 구하기 (0) | 2026.02.25 |
|---|---|
| [26.02.24 코테(MySQL/Oracle)]-조회수가 가장 많은 중고 게시판의 첨부파일 조회하기 (0) | 2026.02.24 |
| [26.02.20 코테(MySQL/Oracle)]-자동차 평균 대여 기간 구하기 (0) | 2026.02.20 |
| [26.02.19 코테(MySQL)]-조건에 맞는 사용자 정보 조회하기 (0) | 2026.02.19 |
| [26.02.13 코테(MySQL)]-조건에 맞는 개발자 찾기 (0) | 2026.02.13 |