SET 명령어와 사용자 정의 변수
SET
: SET 명령어는 변수의 값을 설정하는 데 사용.@
기호로 시작하며, 사용 전에 반드시 초기화할 필요는 없지만, 초기화하지 않은 변수를 사용하면 NULL 값을 반환한다고 한다.예시코드:
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
GROUP BY HOUR
ORDER BY HOUR;
재귀적 쿼리
파이썬에도 재귀함수가 있듯이 SQL 에도 재귀 쿼리 기법이 존재한다. 재귀 쿼리의 조건은 다음과 같다:
참고자료: https://inpa.tistory.com/entry/MYSQL-📚-RECURSIVE-재귀-쿼리
예시코드:
WITH RECURSIVE hours AS (
SELECT 0 AS hour
UNION ALL
SELECT hour + 1
FROM hours
WHERE hour < 23
)
SELECT
h.hour AS HOUR,
COALESCE(COUNT(a.ANIMAL_ID), 0) AS COUNT
FROM hours h
LEFT JOIN ANIMAL_OUTS a
ON HOUR(a.DATETIME) = h.hour
GROUP BY h.hour
ORDER BY h.hour;
DATEDIFF
오늘 코드카타에 저번에 풀었던 문제들이 융합되는 형태로 등장했다.
그런 의미에서 다시 한 번 리마인드가 필요할 거 같아 정리한다.