Image

Lv.2 🔗연도 별 평균 미세먼지 농도 조회하기

📝문제 요약

문제 설명

AIR_POLLUTION 테이블은 전국의 월별 미세먼지 정보를 담은 테이블입니다. AIR_POLLUTION 테이블의 구조는 다음과 같으며 LOCATION1LOCATION2YMPM_VAL1PM_VAL2은 각각 지역구분1, 지역구분2, 측정일, 미세먼지 오염도, 초미세먼지 오염도를 의미합니다.

Column name Type Nullable
LOCATION1 VARCHAR FALSE
LOCATION2 VARCHAR FALSE
YM DATE FALSE
PM_VAL1 NUMBER FLASE
PM_VAL2 NUMBER FLASE

문제

AIR_POLLUTION 테이블에서 수원 지역의 연도 별 평균 미세먼지 오염도와 평균 초미세먼지 오염도를 조회하는 SQL문을 작성해주세요. 이때, 평균 미세먼지 오염도와 평균 초미세먼지 오염도의 컬럼명은 각각 PM10PM2.5로 해 주시고, 값은 소수 셋째 자리에서 반올림해주세요.

결과는 연도를 기준으로 오름차순 정렬해주세요.


예시

AIR_POLLUTION 테이블이 다음과 같을 때

LOCATION1 LOCATION2 YM PM_VAL1 PM_VAL2
경기도 수원 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

SQL을 실행하면 다음과 같이 출력되어야 합니다.

YEAR PM10 PM2.5
2018 41 20.25


✏️문제 풀이

SELECT

SELECT YEAR(YM) AS YEAR, ROUND(AVG(PM_VAL1), 2) AS 'PM10', ROUND(AVG(PM_VAL2), 2) AS 'PM2.5' 
  • YEAR
    • YEAR(YM) : YM 컬럼의 년도만 출력
  • PM10
    • AVG(PM_VAL1) : PM_VAL1 데이터의 평균값
    • ROUND(…, 2) : 소수점 3번째 자리에서 반올림
  • PM2.5
    • AVG(PM_VAL2) : PM_VAL2 데이터의 평균값
    • ROUND(…, 2) : 소수점 3번째 자리에서 반올림

FROM

FROM AIR_POLLUTION
  • AIR_POLLUTION 테이블의 데이터를 가져옴

WHERE

WHERE LOCATION2 LIKE '수원'
  • LOCATION2의 데이터가 ‘수원’인 데이터만 필터링

GROUP BY

GROUP BY YEAR(YM)
  • YEAR(YM) : 연도를 기준으로 그룹화

ORDER BY

ORDER BY 1
  • 1번 컬럼. 즉, YEAR 을 기준으로 오름차순 정렬


💯제출 코드

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 LIKE '수원'
GROUP BY YEAR(YM)
ORDER BY 1

댓글남기기