https://solvesql.com/problems/weekday-stats-airpollution/
-- 각 행의 측정 시간(measured_at)에서 요일을 계산하고, 이를 한글 요일명으로 변환
SELECT
CASE strftime('%w', measured_at) -- '%w'는 SQLite에서 0~6으로 요일을 반환 (0: 일요일, 1: 월요일, ... , 6: 토요일)
WHEN '0' THEN '일요일'
WHEN '1' THEN '월요일'
WHEN '2' THEN '화요일'
WHEN '3' THEN '수요일'
WHEN '4' THEN '목요일'
WHEN '5' THEN '금요일'
WHEN '6' THEN '토요일'
END AS weekday, -- 변환된 요일 이름을 'weekday' 열로 지정
-- 각 요일별 평균값을 계산, 소수점 넷째 자리까지 반올림
ROUND(AVG(no2), 4) AS no2, -- 이산화질소(NO2)의 평균값
ROUND(AVG(o3), 4) AS o3, -- 오존(O3)의 평균값
ROUND(AVG(co), 4) AS co, -- 일산화탄소(CO)의 평균값
ROUND(AVG(so2), 4) AS so2, -- 이산화황(SO2)의 평균값
ROUND(AVG(pm10), 4) AS pm10, -- 미세먼지(PM10)의 평균값
ROUND(AVG(pm2_5), 4) AS pm2_5 -- 초미세먼지(PM2.5)의 평균값
FROM measurements
GROUP BY weekday -- 요일별로 데이터를 그룹화하여 평균값 계산
-- 요일을 월요일부터 일요일 순으로 정렬
ORDER BY
CASE weekday
WHEN '월요일' THEN '1' -- 월요일: 1
WHEN '화요일' THEN '2' -- 화요일: 2
WHEN '수요일' THEN '3' -- 수요일: 3
WHEN '목요일' THEN '4' -- 목요일: 4
WHEN '금요일' THEN '5' -- 금요일: 5
WHEN '토요일' THEN '6' -- 토요일: 6
WHEN '일요일' THEN '7' -- 일요일: 7
END
'SQL' 카테고리의 다른 글
[solvesql - day 13] 게임 개발사의 주력 플랫폼 찾기 (0) | 2025.01.11 |
---|---|
[solvesql - day 12] 3년간 들어온 소장품 집계하기 (0) | 2025.01.11 |
[solvesql - day 10] 최대값을 가진 행 찾기 (0) | 2025.01.10 |
[solvesql - day 9] 게임 평점 예측하기 1 (0) | 2025.01.10 |
[solvesql - day 8] 온라인 쇼핑몰의 월 별 매출액 집계 (0) | 2025.01.10 |