solvesql
- 서울숲 요일별 대기오염도 계산하기
👉 문제 바로가기(solvesql)
SELECT
CASE WHEN strftime('%u', measured_at) = '1' THEN '월요일'
WHEN strftime('%u', measured_at) = '2' THEN '화요일'
WHEN strftime('%u', measured_at) = '3' THEN '수요일'
WHEN strftime('%u', measured_at) = '4' THEN '목요일'
WHEN strftime('%u', measured_at) = '5' THEN '금요일'
WHEN strftime('%u', measured_at) = '6' THEN '토요일'
WHEN strftime('%u', measured_at) = '7' 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 strftime('%u', measured_at)
ORDER BY strftime('%u', measured_at)
[ 논리 과정 ]
- Datetime 타입 데이터를 요일로 변환한다.
- 변환한 요일 데이터로 그룹핑하여 데이터를 추출한다.
- 월요일부터 나오도록 데이터를 정렬한다.
[ 문제 상황 ]
- 월요일이 먼저나오도록 정렬해야 하는데 strftime에 '%w' 코드는 일요일 값이 0으로, 정렬시 먼저 나온다.
[ 해결 ]
- strftime에 '%u' 코드를 사용하면 월요일:1 ~ 일요일:7로 매핑되어 오름차순 정렬로 월요일부터 나오도록 정렬이 가능하다.
[ 회고 ]
- 날짜 데이터를 다룰 때 strftime는 유용하게 쓰인다. 이번 문제 말고도 여러 문제를 strftime 함수를 통해 해결할 수 있었다.
- strftime 함수의 옵션을 잘 알아두어야겠다.
'DA Study > TIL' 카테고리의 다른 글
[TIL] DATEDIFF(), LEFT OUTER JOIN # MYSQL (2) | 2024.12.27 |
---|---|
[TIL] 동적 웹페이지 스크래핑, 크롤링하기 #python3 #FConline (1) | 2024.12.27 |
[TIL] 다중 논리 연산자, 게임 평점 예측하기 1 #SQL #SQLite #solvesql (2) | 2024.12.22 |
[TIL] 3개 이상의 LEFT JOIN, 날짜 형식 포맷팅 #SQL #SQLite #solvesql (0) | 2024.12.21 |
[TIL] 기증품 비율 계산하기 #SQL #ORACLE (2) | 2024.12.20 |