개발로그필름
[SQL] 연도별 대장균 크기의 편차 구하기 본문
728x90
반응형
SMALL
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/299310
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
정답 쿼리
-- 연도별 최대 크기 구하기
WITH MAX_SIZE AS (
SELECT
YEAR(DIFFERENTIATION_DATE) YEAR,
MAX(SIZE_OF_COLONY) MAX_SIZE
FROM ECOLI_DATA
GROUP BY YEAR(DIFFERENTIATION_DATE)
)
SELECT
YEAR(D.DIFFERENTIATION_DATE) AS YEAR,
(M.MAX_SIZE - D.SIZE_OF_COLONY) AS YEAR_DEV,
D.ID
FROM ECOLI_DATA D
JOIN MAX_SIZE M
ON YEAR(D.DIFFERENTIATION_DATE) = M.YEAR
ORDER BY YEAR ASC, YEAR_DEV ASC;
오답노트
- 계속 SELECT 안에서 MAX(SIZE_OF_COLONY) - SIZE_OF_COLONY 를 하려고 했다
- MAX(SIZE_OF_COLONY)는 group by가 적용돼야 하는 구문이고 SIZE_OF_COLONY 는 아닌데 이렇게 하면 계속 0이 나올수밖에 없다
- 따라서 둘이 분리해서 구해주는게 필요한데, 그래서 적용한게 WITH 구문
- WITH 구문은 실무에도 많이 쓰이고 임시로 테이블을 만들어서 결과를 보고 수정이 편리한 구문이다
- 그래서 먼저 with 구문으로 연도별 max 값 테이블을 만들어놓고
- 원래의 ECOLI_DATA 테이블과 연도끼리 join 해서 SIZE_OF_COLONY을 빼서 편차 구해서 풀었다
- with 구문 써서 푸는거 기억하기
반응형
LIST
'coding test > 프로그래머스' 카테고리의 다른 글
| [SQL] 카테고리 별 상품 개수 구하기 (0) | 2025.06.13 |
|---|---|
| [SQL] 특정 물고기를 잡은 총 수 구하기 (0) | 2025.06.12 |
| [SQL] 분기별 분화된 대장균의 개체 수 구하기 (0) | 2025.06.11 |
| [SQL] 조건에 부합하는 중고거래 상태 조회하기 (0) | 2025.06.11 |
| [SQL] 자동차 평균 대여 기간 구하기 (2) | 2025.06.10 |
Comments