[프로그래머스 SQL/284530] 연도 별 평균 미세먼지 농도 조회하기

☑️ 문제

프로그래머스 284530

☑️ 풀이

첫 번째 풀이 (실패)

SELECT 
  DATE_FORMAT(YM, '%Y') AS YEAR,
  ROUND(AVG(PM_VAL1), 2) AS PM10,
  ROUND(AVG(PM_VAL2), 2) AS `PM2.5`
FROM AIR_POLLUTION
WHERE LOCATION2 = '수원'
GROUP BY DATE_FORMAT(YM, '%Y')
ORDER BY YEAR;
  • DATE_FORMAT(YM, ‘%Y’)를 쓰면 문자열(ex. ‘2021’)을 반환한다.

두 번째 풀이 (성공)

SELECT YEAR(YM) AS YEAR, 
        ROUND(AVG(PM_VAL1),2) AS PM10, 
        ROUND(AVG(PM_VAL2),2) AS `PM2.5` 
FROM AIR_POLLUTION
WHERE LOCATION2 = '수원'
GROUP BY YEAR
ORDER BY YEAR
  • YEAR(YM) 은 숫자형 정수 연도(ex. 2021)을 반환한다.

☑️ 문법 정리

ROUND

  • 형태

      ROUND(number, decimals)
    
    • 숫자 값을 소수점 n자리까지 반올림한다.
    • number : 반올림할 숫자
    • decimals : 소수점 아래 몇 자리까지 남길 지(정수)
      • 0으로 넣으면 정수로 반올림된다.
      • 음수를 넣으면 소수점 왼쪽 자리에서 반올림된다.
  • 예시

    입력결과
    ROUND(123.456, 2)123.46
    ROUND(123.454, 2)123.45
    ROUND(123.5, 0)124
    ROUND(123.456, 1)123.5
    ROUND(12345, -2)12300

FLOOR

  • 형태

      FLOOR(x)
    
    • 소수점 아래를 버린다.
  • 예시

      SELECT FLOOR(123.9);    -- 결과: 123
      SELECT FLOOR(-123.1);   -- 결과: -124
    

CEIL

  • 형태

      CEIL(x)
    
    • 소수점 아래를 올린다.
  • 예시

      SELECT CEIL(123.1);     -- 결과: 124
      SELECT CEIL(-123.9);    -- 결과: -123
    

TRUNCATE

  • 형태

      TRUNCATE(x, n)
    
    • n자리까지 자르고 그 이후는 버린다.
    • 반올림 하지 않는다.
  • 예시

      SELECT TRUNCATE(123.4567, 2);  -- 결과: 123.45
      SELECT TRUNCATE(123.999, 0);   -- 결과: 123
    

© 2021. All rights reserved.

yaejinkong의 블로그