[SQL] 연도별 대장균 크기의 편차 구하기
2024. 5. 5. 23:52ㆍ코딩 테스트
문제



개념
- JOIN문의 ON에서도 컬럼에서 함수를 쓸 수 있다.
- 다른 방법으로 풀 때 WINDOW함수를 쓰면 효율적이다.(아래 블로그 글 참조)
[SQL] 윈도우 함수 (WINDOW FUNCTION)
WINDOW FUNCTION 개요 행과 행 간의 관계를 쉽게 정의하기 위해 만든 함수가 윈도우 함수다. 윈도우 함수는 분석 함수나 순위 함수로도 알려져 있다. 윈도우 함수는 기존에 사용하던 집계 함수도 있
moonpiechoi.tistory.com
정답
WITH MS AS
(
SELECT
YEAR(DIFFERENTIATION_DATE) AS YEAR,
MAX(SIZE_OF_COLONY) AS MAX_SIZE
FROM ECOLI_DATA
GROUP BY YEAR(DIFFERENTIATION_DATE)
)
SELECT
YEAR(E.DIFFERENTIATION_DATE) YEAR,
M.MAX_SIZE - E.SIZE_OF_COLONY AS YEAR_DEV,
E.ID
FROM ECOLI_DATA E JOIN MS M ON YEAR(E.DIFFERENTIATION_DATE) = M.YEAR
ORDER BY 1, 2
-- WINDOW 함수 사용
SELECT
YEAR(DIFFERENTIATION_DATE) AS YEAR,
MAX(SIZE_OF_COLONY) OVER (PARTITION BY YEAR(DIFFERENTIATION_DATE))
- SIZE_OF_COLONY AS YEAR_DEV,
ID
FROM ECOLI_DATA
ORDER BY YEAR, YEAR_DEV ASC
'코딩 테스트' 카테고리의 다른 글
| [SQL] 대장균의 크기에 따라 분류하기 2 (0) | 2024.05.06 |
|---|---|
| [SQL] 조건에 맞는 개발자 구하기(프로그래머스) (1) | 2024.05.05 |
| [SQL] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (0) | 2024.05.05 |
| [SQL] 물고기 종류 별 대어 찾기 (0) | 2024.05.04 |
| [SQL] 입양 시각 구하기(2) (0) | 2024.05.04 |