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 (소수점 왼쪽 자리에서 반올림)