반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
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 A
LEFT JOIN
(
SELECT YEAR(A.DIFFERENTIATION_DATE) AS YEAR,
MAX(A.SIZE_OF_COLONY) AS MAX_SIZE
FROM ECOLI_DATA A
GROUP BY YEAR(A.DIFFERENTIATION_DATE)
) B
ON YEAR(A.DIFFERENTIATION_DATE) = B.YEAR
ORDER BY YEAR ASC, YEAR_DEV ASC
SELECT YEAR(A.DIFFERENTIATION_DATE) AS YEAR,
A 테이블의 DIFFERENTIATION_DATE에서 연도 부분만 추출해서 YEAR라는 별칭을 붙입니다.
- 예) 2024-05-14 → 2024
(B.MAX_SIZE - A.SIZE_OF_COLONY) AS YEAR_DEV,
연도별 최대 크기(MAX_SIZE)에서 현재 행의 세포 크기(SIZE_OF_COLONY)를 뺀 값을 YEAR_DEV라는 별칭으로 저장합니다.
- 이 값은 각 연도에서 해당 세포 크기가 최대 크기와 얼마나 차이 나는지를 보여줍니다.
FROM ECOLI_DATA A
이 쿼리의 기본 테이블로 ECOLI_DATA 테이블을 A라는 별칭으로 지정합니다.
LEFT JOIN
(
SELECT YEAR(A.DIFFERENTIATION_DATE) AS YEAR,
MAX(A.SIZE_OF_COLONY) AS MAX_SIZE
FROM ECOLI_DATA A
GROUP BY YEAR(A.DIFFERENTIATION_DATE)
) B
서브쿼리를 작성합니다. 이 서브쿼리는 각 연도별로 세포 크기(SIZE_OF_COLONY)의 최대값을 찾습니다.
- GROUP BY로 연도별로 묶어 최대값을 계산하고, 그 결과를 B라는 별칭으로 사용합니다.
- 서브쿼리 결과 예시
ON YEAR(A.DIFFERENTIATION_DATE) = B.YEAR
- 원본 테이블 A의 연도와 서브쿼리 B의 연도를 기준으로 LEFT JOIN합니다.
- LEFT JOIN이므로, A의 모든 행을 유지하면서 매칭되지 않는 연도는 NULL로 채워집니다.
ORDER BY YEAR ASC, YEAR_DEV ASC;
- 결과를 연도(YEAR) 기준으로 오름차순 정렬합니다.
- 만약 같은 연도에 여러 개의 행이 있다면, YEAR_DEV 기준으로 오름차순 정렬합니다
반응형
LIST
'알고리즘 문제 > 프로그래머스' 카테고리의 다른 글
프로그래머스 당구 연습 [Lv. 2] (C++) (0) | 2024.10.21 |
---|---|
프로그래머스 올바른 괄호 [Lv. 2] (C++) (0) | 2024.10.19 |
프로그래머스 조건에 맞는 개발자 찾기 [Lv. 2] (MySQL) (1) | 2024.10.16 |
프로그래머스 부모의 형질을 모두 가지는 대장균 찾기 [Lv. 2] (MySQL) (0) | 2024.10.16 |
프로그래머스 석유 시추 [Lv. 2] (C++) (0) | 2024.10.16 |