문제를 보고 MySQL에는 range()같은게 없는 데 어떻게 하지라는 생각을 했다.
0부터 23까지 union all을 노가다를 해야하나 싶었지만
구글링해보고 찾아본 결과 ✨with recursive를 사용하면 됐다.
❗HOUR(DATETIME)하면 DATETIME에 없는 시간은 안나오니까
2번째 줄: with recursive를 이용하여 TMP라는 임시 테이블을 만들었다.
3번째 줄: 초기값 = 0 으로 하고 별칭 은 "h"로 지정했다.
5번째 줄: 계산식 = +1 으로 하고 제어문 WHERE = h<23
h = 0~23까지 생성
9번째 줄: 기준이 되는 테이블 ➡️ TMP == h(0~23)
LEFT OUTER JOIN이기 떄문에 TMP에 있는 0시~23시는 전부 가져온다.
조인 조건 ➡️ DATETIME의 시간(HOUR)과 0~23
10번째 줄: 각 시간대별이니깐 그룹핑 기준을 h로한다.
11번째 줄: 결과는 시간대 순으로 정렬