inblog logo
|
silver
    SQL문제풀기

    [SQL문제풀기] 연도별 대장균 크기의 편차 구하기

    silver's avatar
    silver
    Dec 12, 2024
    [SQL문제풀기] 연도별 대장균 크기의 편차 구하기
     

    문제

    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/299310
     

    내가 작성한 오답

    SELECT L.YEAR, 최대-L.SIZE_OF_COLONY YEAR_DEV, L.ID FROM (SELECT DATE_FORMAT(DIFFERENTIATION_DATE,'%Y') YEAR, ID, SIZE_OF_COLONY FROM ECOLI_DATA) L JOIN (SELECT DATE_FORMAT(DIFFERENTIATION_DATE,'%Y') YEAR, MAX(SIZE_OF_COLONY) 최대 FROM ECOLI_DATA GROUP BY DATE_FORMAT(DIFFERENTIATION_DATE,'%Y')) R ON L.YEAR = R.YEAR ORDER BY L.YEAR ASC, YEAR_DEV ASC;
     

    수정한 정답

    SELECT CAST(L.YEAR AS UNSIGNED) AS YEAR, 최대-CAST(L.SIZE_OF_COLONY AS UNSIGNED) YEAR_DEV, L.ID FROM (SELECT DATE_FORMAT(DIFFERENTIATION_DATE,'%Y') YEAR, ID, SIZE_OF_COLONY FROM ECOLI_DATA) L JOIN (SELECT DATE_FORMAT(DIFFERENTIATION_DATE,'%Y') YEAR, MAX(SIZE_OF_COLONY) 최대 FROM ECOLI_DATA GROUP BY DATE_FORMAT(DIFFERENTIATION_DATE,'%Y')) R ON L.YEAR = R.YEAR ORDER BY CAST(L.YEAR AS UNSIGNED) ASC, YEAR_DEV ASC;
     
    💡
    DATE_FORMAT함수는 날짜를 문자열로 바꿔준다.
    분화된 연도(YEAR), 분화된 연도별 대장균 크기의 편차(YEAR_DEV), 대장균 개체의 ID(ID) 를 출력하는 SQL 문을 작성해주세요. 분화된 연도별 대장균 크기의 편차는 분화된 연도별 가장 큰 대장균의 크기 - 각 대장균의 크기로 구하며 결과는 연도에 대해 오름차순으로 정렬하고 같은 연도에 대해서는 대장균 크기의 편차에 대해 오름차순으로 정렬해주세요.
     
    → 처음 작성 오답 작성시 출력된 결과값이 같으므로 문자열을 숫자열로 바꿔야한다는 생각을 하지 못했다. 분화된 연도와 연도별 대장균 크기의 편차를 정확하게 정렬하기 위해서는 문자와 문자를 비교하는게 아니라 숫자를 비교해야하므로 문자열을 숫자로 캐스팅해야했다.
     
    💡
    MYSQL에서 문자열을 숫자로 변환하는 방법 CAST(DATE_FORMAT(DIFFERENTIATION_DATE, '%Y') AS UNSIGNED) CONVERT(DATE_FORMAT(DIFFERENTIATION_DATE, '%Y'), UNSIGNED)
     
    Share article

    silver

    RSS·Powered by Inblog