웹 프로그래밍/SQL

sql 공부 살짝 recursive timetable

mcdn 2021. 9. 15. 14:06
반응형
-- 코드를 입력하세요
with recursive timetable as (
    select 0 as h
    union all 
    select h + 1 
    from timetable 
    where h < 23
)

select h, count(HOUR(DATETIME)) as count
from timetable left outer join animal_outs on (h=HOUR(DATETIME))
GROUP BY h
ORDER BY h

# SELECT h, COUNT(HOUR(DATETIME)) AS 'COUNT'
# FROM TIME LEFT OUTER JOIN ANIMAL_OUTS
# ON (h=HOUR(DATETIME))
# GROUP BY h

대략 읽어보니 초기 설정값과 recursive할 쿼리를 union all로 엮는 쿼리같다.
with로 임시 테이블을 생성하고,

1
2
3
4
5
6
WITH recursive CTE as( #재귀쿼리 세팅
    select 0 as HOUR #초기값 설정
    union all #위 쿼리와 아래 쿼리의 값을 연산
    select HOUR+1 from CTE #하나씩 불려 나감 
    where HOUR < 23 #반복을 멈추는 용도
)
Colored by Color Scripter
cs

위 임시 테이블을 토대로 LEFT JOIN할 테이블인
ANIMAL_OUTS 테이블을 불러와주었다.
그리고 SELECT로 CTE 테이블의 HOUR와 OUTS 테이블의 HOUR를 카운트해주면 끝!

 

https://programmers.co.kr/questions/16108

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

https://velog.io/@cyanred9/SQL-Recursive

 

[SQL] Recursive 표현으로 쿼리 만들기

프로그래머스의 입양 시각 구하기(2) 문제를 보게 되면서 고민에 빠지게 된다.0부터 24시까지의 hour 칼럼을 어떻게 만들지?계속 검색을 해본 결과, python처럼 for문을 써서 0부터 24까지 만드는 구문

velog.io

https://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

 

 

 

 

반응형