개발로그필름

[SQL] 입양 시각 구하기(2) 본문

coding test/프로그래머스

[SQL] 입양 시각 구하기(2)

yuullog 2025. 6. 9. 10:39
728x90
반응형
SMALL
반응형

 

 

 

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

 

프로그래머스

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

programmers.co.kr

 

 

정답 쿼리
WITH RECURSIVE HOURS AS (
  SELECT 0 AS HOUR
  UNION ALL
  SELECT HOUR + 1
  FROM HOURS
  WHERE HOUR < 23
),
HOURS_CNT AS (
    SELECT HOUR(DATETIME) HOUR, COUNT(*) COUNT
    FROM ANIMAL_OUTS
    GROUP BY HOUR(DATETIME)
    ORDER BY HOUR
)

SELECT H.HOUR, IF(C.COUNT IS NULL, 0, C.COUNT) COUNT
FROM HOURS H
LEFT JOIN HOURS_CNT C
    ON H.HOUR = C.HOUR

 

노트
WITH RECURSIVE HOURS AS (
  SELECT 0 AS HOUR
  UNION ALL
  SELECT HOUR + 1
  FROM HOURS
  WHERE HOUR < 23
)
  • 처음 배우게 된 재귀 쿼리 부분이다
  • SELECT 0 AS HOUR
    • HOUR = 0 인 한 줄을 생성한다 (재귀 시작)
  • SELECT HOUR + 1
    FROM HOURS
    WHERE HOUR < 23
    • 위에서 생성된 HOUR 값을 하나씩 증가시키며 재귀적으로 자신을 호출한다

 

반응형
LIST
Comments