Notice
Recent Posts
Recent Comments
Link
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

하루에 하나씩 공부하기

입양 시각 구하기(2)-LV4 본문

SQL 코딩테스트/LV4

입양 시각 구하기(2)-LV4

dltaexox 2025. 2. 11. 13:55

- 문제

보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.

 

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

 

프로그래머스

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

programmers.co.kr

 

 

- 키포인트

SQL에서 재귀함수에 대해 아예 몰라서 해당 시간대가 없는 시간대를 출력값에 추가할 수 없었음

재귀함수 RECURSIVE 사용 방식에 대해 처음 알게 되었음

WITH RECURSIVE cte AS
(
  SELECT 1
  UNION ALL
  SELECT n + 1 FROM cte WHERE n < 5 -- FROM절에 자신이 참조됨.
)
SELECT * FROM cte;

 

- 코드

WITH RECURSIVE A AS (
SELECT 0 AS HOUR 
UNION ALL
SELECT HOUR+1 FROM A WHERE HOUR<23),
B AS (
SELECT HOUR(DATETIME) AS HOUR, COUNT(*) AS CNT
FROM ANIMAL_OUTS
GROUP BY HOUR)

SELECT A.HOUR, 
CASE WHEN B.CNT IS NULL THEN 0
ELSE CNT 
END AS COUNT
FROM A LEFT JOIN B ON A.HOUR=B.HOUR
ORDER BY HOUR;