각 시간대별로 나누어 주어야하는 문제였습니다.
저는 평소에 LEFT를 자주사용해서 LEFT를 이용해서 풀려고 했습니다.
그치만 예제의 시간은 9, 10, 11 이라면 제가 뽑은 데이터는 09, 10, 11 이기때문에 뭔가 잘못된거 같습니다.
무엇이 잘못된지 알아봅시다.
DATETIME에서 HOUR를 사용할수있다고 합니다.
예제처럼 잘 출력이 됩니다.
HOUR를 사용해야하는 문제였나봅니다.
다 된줄 알았는데 또 뭐가 안됩니다.
SQL은 오른쪽에서 왼쪽으로 거꾸로 평가가 됩니다.
예를 들어서 WHERE 먼저 평가되고, SELECT 가 평가되기 때문에
별칭의 HOUR로 WHERE에서 적어주면 이 친구는 무슨말인지 몰라 오류를 뱉는다는 말입니다!
하지만 별칭은 group by 와 order by 에서는 사용 가능합니다.
Unknown cloumn in 'where clause' solution
정답 ▼
SELECT HOUR(DATETIME) AS HOUR, COUNT(1) AS COUNT
FROM ANIMAL_OUTS
WHERE (HOUR(DATETIME) >=9 AND HOUR(DATETIME) <=19)
GROUP BY HOUR
ORDER BY HOUR