https://school.programmers.co.kr/learn/courses/30/lessons/299310
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 풀이 1 (GROUP BY 사용)
- 기존 ECOLI_DATA 테이블과 연도별로 그룹핑한 뒤 연도별 최대 대장균 크기를 조회하는 서브 쿼리 테이블을 조인한다.
- 연도와 서브 쿼리의 연도별 최대 대장균 크기 - 각 대장균의 크기, 대장균 ID를 조회한다.
- 연도를 기준으로 오름차순, 대장균 크기의 편차를 기준으로 오름차순 정렬한다.
SELECT
YEAR(A.DIFFERENTIATION_DATE) AS YEAR,
(B.MAX_SIZE - A.SIZE_OF_COLONY) AS YEAR_DEV,
A.ID
FROM
ECOLI_DATA AS A
JOIN (
SELECT
YEAR(DIFFERENTIATION_DATE) AS YEAR,
MAX(SIZE_OF_COLONY) AS MAX_SIZE
FROM
ECOLI_DATA
GROUP BY
YEAR(DIFFERENTIATION_DATE)
) AS B ON YEAR(A.DIFFERENTIATION_DATE) = B.YEAR
ORDER BY
1, 2
문제 풀이 2 (PARTITION BY 사용)
- PARTITION BY 키워드로 연도별 최대 대장균 크기를 조회하는 서브 쿼리 테이블을 만든다.
- 연도와 서브 쿼리의 연도별 최대 대장균 크기 - 각 대장균의 크기, 대장균 ID를 조회한다.
- 연도를 기준으로 오름차순, 대장균 크기의 편차를 기준으로 오름차순 정렬한다.
SELECT
YEAR(DIFFERENTIATION_DATE) AS YEAR,
(MAX_SIZE - SIZE_OF_COLONY) AS YEAR_DEV,
ID
FROM
(
SELECT *, MAX(SIZE_OF_COLONY) OVER (PARTITION BY YEAR(DIFFERENTIATION_DATE)) AS MAX_SIZE
FROM ECOLI_DATA
) AS A
ORDER BY
1, 2'SQL > SUM, MAX, MIN' 카테고리의 다른 글
| [프로그래머스 SQL] Lv.3 - 물고기 종류 별 대어 찾기 (0) | 2025.03.17 |
|---|---|
| [프로그래머스 SQL] Lv.2 - 조건에 맞는 아이템들의 가격의 총합 구하기 (0) | 2025.03.14 |
| [프로그래머스 SQL] Lv2. - 중복 제거하기 (0) | 2025.03.14 |
| [프로그래머스 SQL] Lv.2 - 동물 수 구하기 (0) | 2025.03.14 |
| [프로그래머스 SQL] Lv.2 - 최솟값 구하기 (0) | 2025.03.14 |