시작이 반

[MySQL] with recursive 본문

Programming/MySQL

[MySQL] with recursive

G_Gi 2021. 4. 23. 18:15
SMALL

메모리 상에 가상의 테이블 저장

실제로 테이블을 생성하거나 가상 테이블을 생성할 수 있다.

 

with recursive 테이블명 as(
select 초기값 as 컬럼별명1
union all
select 컬럼별명1 계산식 from 테이블명 where 조건문)

 

이 쿼리를 찾은 이유는 

programmers.co.kr/learn/courses/30/lessons/59413

 

코딩테스트 연습 - 입양 시각 구하기(2)

ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물

programmers.co.kr

문제의 존재하지 않은 입양시간의 카운트도 조회해야 했기 때문이다.

 

23까지 가상 테이블을 생성하였다.

 

이제 0 ~ 23까지 시간에서 입양된 동물을 확인하기 위해

가상 테이블 left join animal_outs on h = hour(datetime)을 해준다.

(가상테이블 기준)

 

최종 코드

with recursive temp as(
select 0 as h
    union all
select h+1 from temp where h < 23
)

select h, count(hour(datetime))
from temp left join animal_outs on h = hour(datetime)
group by h
order by h;

 

 

LIST

'Programming > MySQL' 카테고리의 다른 글

[MySQL] IN, NOT IN  (0) 2021.09.13
[MySQL] IFNULL, if문 null값 확인  (0) 2021.04.23
[MySQL] Group by, Having  (0) 2021.04.23
[MySQL] 집계함수(COUNT, SUM, AVG, MAX, MIN)  (0) 2021.04.23
[MySQL] Select 실행순서  (0) 2021.04.23