요일을 구하는 함수
weekday(date) : 월요일(0)부터 일요일(6)dayofweek(date) : 일요일(1)부터 토요일(7)SELECT WEEKDAY(measured_at)
FROM measurements
GROUP BY
WEEKDAY(measured_at)

SELECT (CASE WHEN WEEKDAY(measured_at) = 0 THEN '월요일'
WHEN WEEKDAY(measured_at) = 1 THEN '화요일'
WHEN WEEKDAY(measured_at) = 2 THEN '수요일'
WHEN WEEKDAY(measured_at) = 3 THEN '목요일'
WHEN WEEKDAY(measured_at) = 4 THEN '금요일'
WHEN WEEKDAY(measured_at) = 5 THEN '토요일'
ELSE '일요일' 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
이걸 월화수목금토일 순으로 정렬하려면 어떻게 해야 될까?
-- 01. FIELD
ORDER BY
FIELD(weekday, '월요일', '화요일', '수요일', '목요일', '금요일', '토요일', '일요일');
-- 02. MAX
ORDER BY
MAX(WEEKDAY(measured_at)) ASC
FIELD(찾을값, 나열된 목록(값1, 값2, 값3,) MySQL에서만 가능FIELD('수요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일', '일요일') → 3MAX(WEEKDAY(measured_at)) ASCGROUP BY weekday로 이미 그룹화를 해놓은 것이다. 그래서 레코드마다 개인 값으로 정렬을 시키려고 하면, 집계되지 않은 값이라고 에러가 든다. 따라서, MAX로 대표값을 나타나도록 하고 오름차순으로 정렬하면 원하는 대로 정렬이 가능해진다.