[String, Date] 연도 별 평균 미세먼지 농도 조회하기

2024. 10. 19. 18:00SQL 고득점 Kit/String, Date

https://school.programmers.co.kr/learn/courses/30/lessons/284530

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명
AIR_POLLUTION 테이블은 전국의 월별 미세먼지 정보를 담은 테이블입니다.

AIR_POLLUTION 테이블의 구조는 다음과 같으며 LOCATION1, LOCATION2, YM, PM_VAL1, PM_VAL2은 각각 지역구분1, 지역구분2, 측정일, 미세먼지 오염도, 초미세먼지 오염도를 의미합니다.

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

문제
AIR_POLLUTION 테이블에서 수원 지역의 연도 별 평균 미세먼지 오염도와 평균 초미세먼지 오염도를 조회하는 SQL문을 작성해주세요.

이때, 평균 미세먼지 오염도와 평균 초미세먼지 오염도의 컬럼명은 각각 PM10, PM2.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

수원 지역의 연도 별 평균 미세먼지 오염도와 평균 초미세먼지 오염도를 조회하는 문제입니다.

 

조건이 여러 개지만 하나씩 하다보면 쉽습니다. 조건을 나열해보자면

1. 수원 지역 - LOCATION2에 수원이 있어야 함

2. 연도별 - GROUP BY를 사용해 그룹화

3. 평균 미세먼지 오염도 - AVG를 사용해 평균 도출

4. 평균 초미세먼지 오염도 - AVG를 사용해 평균 도출

 

총 4가지입니다.

 

각각의 조건에 맞도록 정답 코드를 작성해보겠습니다.

  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
ORDER BY YEAR ASC;

 

하나씩 하다보면 쉽게 풀 수 있습니다.