CODING TEST/MySQL
Lv2- 연도 별 평균 미세먼지 농도 조회하기
iamyuunzo
2025. 7. 29. 13:57
📌 문제 정보
- 문제 이름 : 프로그래머스 - (String, Date) 연도 별 평균 미세먼지 농도 조회하기
- 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/284530
📌 문제 요약
- AIR_POLLUTION 테이블 : LOCATION1, LOCATION2, YM, PM_VAL1(미세먼지), PM_VAL2(초미세먼지)
- AIR_POLLUTION 테이블에서 수원 지역의 연도 별 평균 미세먼지 오염도와 평균 초미세먼지 오염도를 조회하는 SQL문을 작성해주세요. 이때, 평균 미세먼지 오염도와 평균 초미세먼지 오염도의 컬럼명은 각각 PM10, PM2.5로 해 주시고, 값은 소수 셋째 자리에서 반올림해주세요. 결과는 연도를 기준으로 오름차순 정렬해주세요.
예시)
| LOCATION1 | LOCATION2 | YM | PM_VAL1 (PM10) | PM_VAL2 (PM2.5) |
| 경기도 | 수원 | 2018-01-01 | 48 | 27 |
| 경기도 | 수원 | 2018-02-01 | 51 | 30 |
| 경기도 | 수원 | 2018-03-01 | 52 | 21 |
| 경기도 | 수원 | 2018-04-01 | 52 | 20 |
| 경기도 | 수원 | 2018-05-01 | 45 | 19 |
| 경기도 | 수원 | 2018-06-01 | 39 | 17 |
| 경기도 | 수원 | 2018-07-01 | 27 | 15 |
| 경기도 | 수원 | 2018-08-01 | 26 | 16 |
| 경기도 | 수원 | 2018-09-01 | 21 | 12 |
| 경기도 | 수원 | 2018-10-01 | 31 | 18 |
| 경기도 | 수원 | 2018-11-01 | 56 | 21 |
| 경기도 | 수원 | 2018-12-01 | 44 | 27 |
| 서울시 | 노원 | 2018-11-01 | 25 | 45 |
| 경기도 | 용인 | 2018-02-01 | 14 | 21 |
출력)
| YEAR | PM10 평균 (PM_VAL1) | PM2.5 평균 (PM_VAL2) |
| 2018 | 41.00 | 20.25 |
📌 내 풀이 및 코드
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(YM)
ORDER BY YEAR(YM);
- 컬럼 이름에 특수 문자나 공백이 들어갈 때 이름이 제대로 인식이 안되길래 ' ' 로 했었는데 ` ` (백틱)을 사용해야 했음.
- SQL에서 PM2.5는 테이블.컬럼 형식으로 잘못 해석되기 때문에.
📌 새로 배운 문법
<-- 이번 문제에서 새로 배운 Java 문법 정리 -->
** ROUND() **
- ROUND(number, decimal_places)
- 반올림 : 5 이상이면 올림, 미만이면 내림 (!= TRUNCATE)
SELECT ROUND(3.14159, 2); -- 결과: 3.14
SELECT ROUND(5.6789, 1); -- 결과: 5.7
SELECT ROUND(123.456, 0); -- 결과: 123
SELECT ROUND(123.456, -1); -- 결과: 120 (소수점 왼쪽 자리에서 반올림)