-- 코드를 작성해주세요
SELECT
DATE_FORMAT(A.DIFFERENTIATION_DATE, '%Y') AS YEAR
, (B.SIZE - A.SIZE_OF_COLONY) AS YEAR_DEV -- 최대크기 - 해당크기
, A.ID
FROM
ECOLI_DATA A
, (
SELECT
DATE_FORMAT(DIFFERENTIATION_DATE, '%Y') AS YEAR
, MAX(SIZE_OF_COLONY) AS SIZE
FROM
ECOLI_DATA
GROUP BY
YEAR
) B -- (년도, 년도 별 최대 크기) 쿼리
WHERE
DATE_FORMAT(A.DIFFERENTIATION_DATE, '%Y') = B.YEAR -- 년도별 JOIN
ORDER BY
YEAR, YEAR_DEV -- 년도 오름차순 및 편차 오름차순
예제랑 답은 같게 나옵니다ㅠㅠ
위에 분이 올려주신 글 참고해서 고쳤습니다.
DATE_FORMAT을 YEAR로 바꾸니 통과했습니다.
아래가 맞는 코드입니다.
-- 코드를 작성해주세요
SELECT
YEAR(A.DIFFERENTIATION_DATE) AS YEAR
, (B.SIZE - A.SIZE_OF_COLONY) AS YEAR_DEV -- 최대크기 - 해당크기
, A.ID
FROM
ECOLI_DATA A
, (
SELECT
YEAR(DIFFERENTIATION_DATE) AS YEAR
, MAX(SIZE_OF_COLONY) AS SIZE
FROM
ECOLI_DATA
GROUP BY
YEAR
) B -- (년도, 년도 별 최대 크기) 쿼리
WHERE
YEAR(A.DIFFERENTIATION_DATE) = B.YEAR -- 년도별 JOIN
ORDER BY
YEAR, YEAR_DEV -- 년도 오름차순 및 편차 오름차순
DATEFORMAT(DIFFERENTIATIONDATE, '%Y') 로 적었을 때 틀릴 수 있는 경우가 있는데
DIFFERENTIATION_DATE에 들어있는 데이터의 형식이 YYYY-MM-DD가 아니라 YY-MM-DD일 경우에는 처리 과정이 YEAR()함수와 다르다고 하네요.
YY-MM-DD의 YY의 값이 69년도를 기준으로 1900년도의 값인지, 2000년도의 값인지를 판별하는 데에 차이가 있습니다.
| 날짜 | YEAR() | DATE_FORMAT(DIFFERENTIATION_DATE, '%Y') |
|------------|--------|-----------------------------------------|
| '68-01-02' | 2068 | 1968 |
| '69-01-02' | 2069 | 1969 |
| '70-01-02' | 1970 | 1970 |
69년도를 기준으로 하는 테스트 케이스가 있나 보네요
참고 자료
아 그러면 테케에 `YY-MM-DD` 형식이 있을수도 있는거군요. 무슨 차이인지 도저히 모르겠었는데 덕분에 배워갑니다 ㅠㅠ 정말 감사합니다!!