[문제]
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;
'코딩테스트_SQL' 카테고리의 다른 글
250404 프로그래머스 조건에 맞는 사용자와 총 거래금액 조회하기 (0) | 2025.04.04 |
---|---|
250403 프로그래머스 카테고리 별 도서 판매량 집계하기 (0) | 2025.04.04 |
250327 프로그래머스 조건에 맞는 아이템들의 가격의 총합 구하기 (0) | 2025.03.27 |
250324 프로그래머스 자동차 평균 대여 기간 구하기 (0) | 2025.03.24 |
250324 프로그래머스 자동차 대여 기록에서 장기/단기 대여 구분하기 (0) | 2025.03.24 |