본문 바로가기

코딩테스트_SQL

250327 프로그래머스 연도 별 평균 미세먼지 농도 조회하기

[문제]

AIR_POLLUTION 테이블에서 LOCATION2가 '수원'인 데이터만을 대상으로 연도(YEAR) 별로 평균 미세먼지 농도를 구하는 SQL문을 작성하세요. 결과는 YEAR, PM10(평균 PM_VAL1), PM2.5(평균 PM_VAL2)로 구성되며, 평균값은 소수점 둘째 자리에서 반올림해야 합니다. 결과는 연도를 기준으로 오름차순 정렬하세요.

 

[풀이]

1) YEAR, PM10, PM2.5 조회

2) YEAR()을 사용하여 날짜 컬럼에서 연도만 추출

3) AVG() 집계 함수를 사용하여 평균값 미세먼지/초미세먼지 평균 농도 계산

4) ROUND() 함수를 사용하여 평균값을 소수점 둘째 자리에서 반올림

5) '수원' 데이터만 대상이므로, WHERE 절에서 데이터 필터링

6) 연도별로 평균 농도 구하는 것이므로 GROUP BY절로 연도 그룹화

7) 연도를 기준으로 오름차순 정렬하기

 

[오답 분석하기]

1) 컬럼명 별칭 처리

ROUND(AVG(PM_VAL2), 2) PM2.5

-> PM2.5를 컬럼명으로 사용하면 .5가 숫자로 인식되어 오류 발생

=> 따라서 컬럼명을 문자열로 묶어 오류 해결

 

[정답]

SELECT YEAR(YM) YEAR, 
        ROUND(AVG(PM_VAL1), 2) 'PM10',
        ROUND(AVG(PM_VAL2), 2) 'PM2.5'
FROM AIR_POLLUTION 
WHERE LOCATION2='수원'
GROUP BY YEAR(YM)
ORDER BY 1;