WITH RECURSIVE 테이블명 AS(
SELECT 초기값 AS 컬럼별명1
UNION ALL
SELECT 컬럼별명1 계산식 FROM 테이블명 WHERE 제어문
✔️ 예를 들어,
with recursive cte as(
select 1 as h
union all
select h+1 from cte where h<5)
select * from cte;
WITH RECURSIVE TIME AS(
SELECT 0 AS h
UNION ALL
SELECT h+1 FROM TIME WHERE h < 23)
SELECT h, COUNT(HOUR(DATETIME)) AS 'COUNT'
FROM TIME LEFT JOIN ANIMAL_OUTS ON (h=HOUR(DATETIME))
GROUP BY h
# 1. time이라는 가상 테이블을 먼저 만들고,
# 2. 별명에 select문을 subquery로 넣는다.
# 3. union all을 통해 두개의 테이블 연결(중복제거)
# 4. h를 초기값 0으로 두고 이걸 23까지로 조건을 주며 h+1로 증가시키는 것.
# 5. h 컬럼값과 datetime에서 시간을 빼와서 count해주고,
# 6. animal_outs를 갖다가 붙여줌!
ㅎㅎㅎㅎ
with recursive 를 몰라서 group by having set 써보고 난리 ^^
아 너무 재밌는데 삽질하다가 새로운 문법으로 풀 수 있는거라고 알게되면 쫌 멘붕온다 !
시간별 입양이 일어나지 않을 때를 고려해줘야하는데 그걸 새로운 가상 테이블을 통해 해결 할 수 있는거당...
그치만.. 오늘 또 하나 배웠당 ! 💙