해당 문제를 풀기 위해서는 계층형 쿼리에 대한 이해가 필요함.
🥞 계층형 쿼리란?
계층형 쿼리는 테이블에 저장된 데이터를 계층형 구조로 반환하는 쿼리이다.
START WITH 조건으로 최상위 노드를 설정하고,
CONNECT BY 절로 계층형 구조에서의 연결조건을 설정할 수 있다.
0 부터 23까지의 숫자를 나타내주기 위해 LEVEL, CONNECT BY절을 이용해야함.
그 다음, 0~23까지의 HOUR 컬럼이 생성되었으니 조인을 통해 문제를 해결해야 함
0~23시에 데이터가 없더라도 시간을 나타내야 하므로 LEFT 조인을 해야한다.
SELECT HOUR, COUNT(O.DATETIME) AS COUNT
FROM
(
SELECT LEVEL-1 AS HOUR
FROM DUAL
CONNECT BY LEVEL<=24
)A LEFT join ANIMAL_OUTS O
ON A.HOUR = to_char(O.DATETIME,'HH24')
GROUP BY HOUR
ORDER BY HOUR;
블로그 출처
[Oracle] 프로그래머스 - 입양 시각 구하기 (1), (2)
1. 입양 시각 구하기(1) 문제설명 ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME..
heestory217.tistory.com