[프로그래머스 SQL/284530] 연도 별 평균 미세먼지 농도 조회하기
in Study / Coding Test
☑️ 문제
☑️ 풀이
첫 번째 풀이 (실패)
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