728x90
반응형
SMALL
📌 문제 정보
- 출처: 문제 링크
- 난이도: ⭐
- 문제 유형: String, Date
- 사용 언어: SQL
🔍 문제 설명
`AIR_POLLUTION` 테이블은 전국의 월별 미세먼지 정보를 담은 테이블입니다. AIR_POLLUTION 테이블의 구조는 다음과 같으며 LOCATION1, LOCATION2, YM, PM_VAL1, PM_VAL2은 각각 지역구분1, 지역구분2, 측정일, 미세먼지 오염도, 초미세먼지 오염도를 의미합니다.
`AIR_POLLUTION` 테이블에서 수원 지역의 연도 별 평균 미세먼지 오염도와 평균 초미세먼지 오염도를 조회하는 SQL문을 작성해주세요. 이때, 평균 미세먼지 오염도와 평균 초미세먼지 오염도의 컬럼명은 각각 PM10, PM2.5로 해 주시고, 값은 소수 셋째 자리에서 반올림해주세요.
결과는 연도를 기준으로 오름차순 정렬해주세요.
💡 풀이 노트
- `YEAR(YM)`
→ 날짜에서 연도만 추출 - `ROUND(AVG(...), 2)`
→ 평균값을 소수점 둘째 자리까지 반올림 - `GROUP BY YEAR(YM)`
→ 연도 단위로 그룹화 - `WHERE LOCATION2 = '수원'`
→ 수원 지역 데이터만 분석 대상으로 필터링
🚀 코드 (SQL)
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);
🖥 실행 결과
입력 & 출력
YEAR PM10 PM2.5
2018 41 20.25
🔄 보충 개념
1. Round() 함수 - 소수점 처리
ROUND(AVG(PM_VAL1), 2)
- `ROUND(value, 2)` 는 소수 둘째 자리까지 표현하고, 셋째 자리에서 반올림
- 예시:
- 20.256 → 20.26
- 20.254 → 20.25
- 여기서 `2`는 소수점 아래 몇 자리까지 표시할지를 의미
2. YEAR() vs DATE_FORMAT() — 연도 추출 함수 비교
`YEAR(YM)`
- 정수형 연도를 추출하는 함수 (2021, 2022, ...)
- 성능이 더 빠르고, 숫자 정렬 및 비교에 유리
- 채점 시스템에서 기대하는 연도 형식에 맞는 값 제공
`DATE_FORMAT(YM, '%Y')`
- 날짜를 문자열로 변환 ('2021', '2022')
- 주로 "2021년", "2021-03" 같은 형식화된 날짜 출력에 사용
❗ 이 문제에서는 `DATE_FORMAT()`을 쓰면 정답이 틀릴 수 있습니다.
이유: 반환값이 문자열이기 때문에 채점 시스템에서 데이터 타입 mismatch 또는 잘못된 정렬/비교가 발생할 수 있습니다.
📌 깃허브 코드 저장소: https://github.com/glorypang/CodingTest
728x90
반응형
LIST