WITH MAX_SIZE_TABLE AS(
SELECT MAX(SIZE_OF_COLONY) AS MAX_SIZE, YEAR(DIFFERENTIATION_DATE) AS YEAR
FROM ECOLI_DATA
GROUP BY YEAR(DIFFERENTIATION_DATE)
)
SELECT YEAR(E.DIFFERENTIATION_DATE) AS YEAR, (M.MAX_SIZE - E.SIZE_OF_COLONY) AS YEAR_DEV, E.ID
FROM ECOLI_DATA AS E
LEFT JOIN MAX_SIZE_TABLE AS M
ON YEAR(E.DIFFERENTIATION_DATE) = M.YEAR
ORDER BY YEAR, YEAR_DEV
풀이 방법
with as를 써서 임시 테이블을 만듦. (년도별로 묶어서 -> 그 년도의 최대 크기를 구함) -> 그 테이블과 원테이블을 left join. (원테이블 기준 left outer join -> 원테이블 정보 모두 가져올 수 있게)
의문
MAX_SIZE_TABLE을 만들 때 그냥 MAX(SIZE_OF_COLONY)로 했을 땐 밑에서 가져올 때 에러가 나더니, AS MAX_SIZE로 별칭을 만들어주고 별칭으로 가져오니 잘 된다. 왜 전에꺼는 안 되지?