SELECT HOUR(DATETIME) AS HOUR, COUNT(*) AS COUNT
FROM ANIMAL_OUTS
GROUP BY HOUR(DATETIME)
ORDER BY HOUR
내가 할 수 있는대로 짜 보았는데 0시 - 23시까지 빠짐없이 출력하는 방법을 몰랐다. 그래서 다른 글들을 찾아보았다.
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
: 변수 @HOUR
를 초기화한다.@HOUR := @HOUR + 1
: SELECT
문이 실행될 때마다 @HOUR의 값을 1씩 증가시킨다.WHERE @HOUR < 23
: 23시까지의 값을 출력하도록 조건을 설정한다.SELECT
문: 각 시간대별로 ANIMAL_OUTS
테이블에서 DATETIME
의 시간과 일치하는 데이터의 수를 집계한다.SQL에서 SET
은 특정 변수에 값을 할당하는 데 사용된다. MySQL에서는 @
접두사를 사용하여 사용자 정의 변수를 생성하고 이를 SET
을 통해 초기화하거나 값 할당이 가능하다
SET @myVar = 'Hello, World!';
SELECT @myVar;
MySQL에서 :=
는 변수에 값을 할당하는 연산자이다. 주로 SET
명령어 없이 SELECT
문 내에서 변수 할당을 할 때 사용된다.
@HOUR + 1
: 현재 @HOUR
변수의 값에 1을 더한다:=
연산자를 사용하여 계산된 값을 @HOUR
변수에 할당한다.쿼리가 반복 실행될 때마다 @HOUR
의 값이 1씩 증가한다.
큰 도움이 되었습니다, 감사합니다.