
서울숲 일별 평균 대기오염도 데이터베이스에는 서울숲 대기 관측소에서 2022년 1년 동안 측정한 대기 오염 정보가 들어있습니다. 서울숲과 그 주변 일대의 유동 인구가 늘어남에 따라 서울숲 주변의 대기 오염 패턴도 유동 인구의 방문에 따라 달라지는 부분이 있을 것으로 예상되는데 이를 데이터를 통해 확인해보고자 합니다. 특히, 주말에 유동 인구가 늘어나고 월요일에 유동인구가 감소하는 방문 패턴이 대기 오염에도 영향을 미치는지 확인하려고 합니다.
이를 위해, measurements 테이블의 데이터를 조회하여 요일별 대기 오염도 평균을 계산하는 쿼리를 작성해주세요. 쿼리 결과에는 아래 7개의 컬럼이 존재해야하며, 대기 오염도 값은 모두 소수점 다섯째 자리에서 반올림 해 넷째 자리까지 표현되어야 합니다. 또한, 쿼리 결과는 월요일부터 일요일 순으로 출력되어야 합니다.
weekday: 요일 (월요일-일요일)
no2: 평균 이산화질소(NO2) 농도(ppm)
o3: 평균 오존(O3) 농도(ppm)
co: 평균 일산화탄소(CO) 농도(ppm)
so2: 평균 아황산가스 농도(ppm)
pm10: 평균 미세먼지(PM10) 농도(㎍/㎥)
pm2_5: 평균 초미세먼지(PM2.5) 농도(㎍/㎥)
-- 요일별 대기오염도 평균을 계산하는 쿼리
select
case
when weekday = 1 then '월요일'
when weekday = 2 then '화요일'
when weekday = 3 then '수요일'
when weekday = 4 then '목요일'
when weekday = 5 then '금요일'
when weekday = 6 then '토요일'
else '일요일'
end as 'weekday',
no2,o3,co,so2,pm10,pm2_5
from(
select case when strftime('%w',measured_at) = '0' then 7 else cast(strftime('%w',measured_at) as INT) end as weekday,
round(avg(no2),4) as no2,
round(avg(o3),4) as o3,
round(avg(co),4) as co,
round(avg(so2),4) as so2,
round(avg(pm10),4) as pm10,
round(avg(pm2_5),4) as pm2_5
from measurements
group by strftime('%w',measured_at)
order by 1 asc
) t
;

월요일부터 출력해야하는데, strftime을 하면 0이 일요일이여서 일요일부터 출력된다.
일요일을 숫자 7로 변경하고 order by 1 asc 을 해서 월요일부터 차례대로 출력되도록 변경한다.
그 다음 숫자를 -요일 문자로 변환하는 작업을 통해 결과값을 출력한다.