# 링크
- solvesql Advent of SQL 2024: https://solvesql.com/collections/advent-of-sql-2024/
- 11일차 - 서울숲 요일별 대기오염도 계산하기: https://solvesql.com/problems/weekday-stats-airpollution/
# 풀이
SELECT
CASE strftime('%w', measured_at)
WHEN '1' THEN '월요일'
WHEN '2' THEN '화요일'
WHEN '3' THEN '수요일'
WHEN '4' THEN '목요일'
WHEN '5' THEN '금요일'
WHEN '6' THEN '토요일'
WHEN '0' THEN '일요일'
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 weekday
ORDER BY strftime('%w', measured_at)='0', strftime('%w', measured_at)
- SELECT
- CASE strftime('%w', measured_at)
WHEN '1' THEN '월요일'
WHEN '2' THEN '화요일'
WHEN '3' THEN '수요일'
WHEN '4' THEN '목요일'
WHEN '5' THEN '금요일'
WHEN '6' THEN '토요일'
WHEN '0' THEN '일요일'
END AS weekday: 날짜에서 요일을 숫자로 반환하고, 숫자로 반환된 요일을 한국어 요일로 변환한다. - ROUND(AVG(no2), 4) AS no2: no2의 평균값을 소수점 넷째 자리까지 반올림하고, no2로 저장한다.
- ROUND(AVG(o3), 4) AS o3: o3의 평균값을 소수점 넷째 자리까지 반올림하고, o3으로 저장한다.
- ROUND(AVG(co), 4) AS co: co의 평균값을 소수점 넷째 자리까지 반올림하고, co로 저장한다.
- ROUND(AVG(so2), 4) AS so2: so2의 평균값을 소수점 넷째 자리까지 반올림하고, so2로 저장한다.
- ROUND(AVG(pm10), 4) AS pm10: pm10의 평균값을 소수점 넷째 자리까지 반올림하고, pm10으로 저장한다.
- ROUND(AVG(pm2_5), 4) AS pm2_5: pm2_5의 평균값을 소수점 넷째 자리까지 반올림하고, pm2_5로 저장한다.
- CASE strftime('%w', measured_at)
- FROM measurements: measurements 테이블에서 데이터를 불러온다.
- GROUP BY weekday: weekday를 기준으로 그룹화한다.
- ORDER BY strftime('%w', measured_at)='0', strftime('%w', measured_at): '0'을 맨 뒤로 정렬하고, 나머지 요일은 숫자 순서로 정렬한다(월요일~일요일 순서로 정렬).
728x90
'SQL > solvesql Advent of SQL 2024' 카테고리의 다른 글
[SQL] solvesql Advent of SQL 2024 13일차 (4) | 2024.12.13 |
---|---|
[SQL] solvesql Advent of SQL 2024 12일차 (0) | 2024.12.12 |
[SQL] solvesql Advent of SQL 2024 10일차 (0) | 2024.12.10 |
[SQL] solvesql Advent of SQL 2024 9일차 (2) | 2024.12.09 |
[SQL] solvesql Advent of SQL 2024 8일차 (0) | 2024.12.08 |