ღ yuni_world ღ

[MySQL] [프로그래머스 level 4] 입양 시각 구하기(2) 본문

MySQL/프로그래머스

[MySQL] [프로그래머스 level 4] 입양 시각 구하기(2)

ღ유닝이ღ 2025. 10. 24. 19:26

📌 문제링크

https://school.programmers.co.kr/learn/courses/30/lessons/59413#

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


📌 문제풀이

## 시간 여백 채우기 위하여 재귀함수 활용
with recursive base as (
    select 0 as hour
    
    union all
    
    select hour+1
    from base
    where hour <=22)

select hour, count(animal_id) as count
from base a left join animal_outs b on a.hour=hour(b.datetime)
group by 1
order by 1

📖 NOTE

  • ANIMAL_OUTS 테이블을 이용해 시간대별 입양 건수를 GROUP BY로 집계하게 되면 입양 기록이 없는 시간대의 경우 아래오 같이 해당 시간대의 행 자체가 생성되지 않음

  • 따라서 재귀함수 with recursive 문을 활용하여 0~23 까지의 임의의 시간컬럼을 생성한 뒤, 시간대별 입양건수를 구하여 조인

📚 재귀함수 with recursive문은 아래 내용 참고

 

[MySQL] 재귀 쿼리(WITH RECURSIVE 문)

📌 재귀 쿼리란?SQL에서는 CTE(Common Table Expression) 중 WITH RECURSIVE 구문을 사용하면 자기 자신을 반복적으로 호출하는 형태의 재귀 쿼리를 만들 수 있음조직도나 카테고리 트리, 댓글처럼 부모-자식

yooninging.tistory.com