https://school.programmers.co.kr/learn/courses/30/lessons/59413
정답부터 알아보도록 하자
SET @hour := -1;
SELECT (@hour := @hour + 1) as HOUR,
(select count(*) from animal_outs where hour(datetime) = @hour) as count
from animal_outs
where @hour <23
한줄 한줄 뜯어본다면
SET @hour := -1;
변수 선언시 SET @변수명
을 사용하면 변수를 선언할 수 있다. 여기서 :=를 사용하는 이유는 SET 이외의 명령어에는 = 가 비교연산자로 취급되기 때문에 :=로 값을 대입한다고 한다.
SELECT (@hour := @hour + 1) as HOUR
이 구문을 통해 0~23까지 1시간 단위로 컬럼을 추가할 수 있다.
이 때 처음 값이 -1이기 때문에 0부터 시작해서 1,2,3...으로 컬럼이 추가된다
where @hour <23
이후 @hour<23 까지 @hour값이 +1씩 증가된다.