SQL 이것저것

[MySQL] Recursive CTE 를 이용한 24시간 쪼개기

pjw250 2024. 10. 21. 10:39

코딩테스트 연습 - 입양 시각 구하기(2) | 프로그래머스 스쿨

 

프로그래머스

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

programmers.co.kr

 

재귀적 CTE를 알아야 수월하게 풀 수 있는 문제, 이걸 모른다면 CASE WHEN을 대략 24번 쳐야한다.

with recursive time
as (
    select 0 as hour
    union all
    select hour + 1
    from time
    where hour < 23
)

select t.hour, count(animal_id)
from time t left join (
    select *, hour(DATETIME) hour
    from ANIMAL_OUTS 
) o on t.hour = o.hour 
group by t.hour
order by t.hour

 

자세한 내용은 아래 블로그를 다시 정독해 보자.

[SQL] RECURSIVE CTE 이해하기

 

[SQL] RECURSIVE CTE 이해하기

CTE란 무엇일까? 먼저, CTE(Common Table Expression)는 복잡한 쿼리를 단순화하고 가독성을 높이기 위해 일시적인 결과 집합을 정의하는 방법이다. CTE는 WITH 절을 사용하여 정의되며, 주로 재사용이 필요

velog.io