https://solvesql.com/problems/finedust-seasonal-summary/
https://solvesql.com/problems/finedust-seasonal-summary/
solvesql.com
-- 3.1 ~ 5.31 = spring
-- 6.1 ~ 8.31 = summer
-- 9.1 ~ 11.30 = autumn
-- 각 측정된 날짜(measured_at)에 대해 계절을 구분하고, 해당 계절의 pm10 미세먼지 수치의 중앙값과 평균을 계산
SELECT
-- 날짜(measured_at)의 월-일 부분을 기준으로 계절을 구분
-- 3월 1일부터 5월 31일까지는 'spring', 6월 1일부터 8월 31일까지는 'summer',
-- 9월 1일부터 11월 30일까지는 'autumn', 나머지는 'winter'로 분류
CASE
WHEN strftime('%m-%d', measured_at) BETWEEN '03-01' AND '05-31' THEN 'spring'
WHEN strftime('%m-%d', measured_at) BETWEEN '06-01' AND '08-31' THEN 'summer'
WHEN strftime('%m-%d', measured_at) BETWEEN '09-01' AND '11-30' THEN 'autumn'
ELSE 'winter' -- 위의 기간에 포함되지 않는 날짜는 'winter'로 분류
END AS season,
-- 각 계절별로 pm10 수치의 중앙값을 계산
MEDIAN(pm10) AS pm10_median,
-- 각 계절별로 pm10 수치의 평균을 계산하고 소수점 2자리까지 반올림
ROUND(AVG(pm10), 2) AS pm10_average
FROM measurements
GROUP BY season -- 계절별로 데이터를 그룹화하여 결과 출력
'SQL' 카테고리의 다른 글
[solvesql - day 22] 친구 수 집계하기 (0) | 2025.01.11 |
---|---|
[solvesql - day 21] 세션 유지 시간을 10분으로 재정의하기 (0) | 2025.01.11 |
[solvesql - day 19] 전국 카페 주소 데이터 정제하기 (0) | 2025.01.11 |
[solvesql - day 18] 펭귄 날개와 몸무게의 상관 계수 (0) | 2025.01.11 |
[solvesql - day 17] 멀티 플랫폼 게임 찾기 (0) | 2025.01.11 |