1. 문제
https://programmers.co.kr/learn/courses/30/lessons/59413
2. 풀이
- 시간대 가상테이블 만들기 : CONNECT BY LEVEL
- 시간대 가상테이블과 시간대별 입양건수 연결하기 : OUTER JOIN(LEFT JOIN)
- 입양건수가 없으면 0을 출력 : NVL
- 건수 출력 : COUNT
- 시간순으로 정렬 : ORDER BY
3. 답안
--ORACLE
SELECT H.HOUR, NVL(T.COUNT, 0) AS COUNT
FROM
(SELECT LEVEL-1 AS HOUR
FROM DUAL
CONNECT BY LEVEL < 25 ) H
LEFT JOIN
(SELECT TO_NUMBER(TO_CHAR(DATETIME, 'HH24')) AS HOUR, COUNT(1) AS COUNT
FROM ANIMAL_OUTS
GROUP BY TO_NUMBER(TO_CHAR(DATETIME, 'HH24')) ) T
ON H.HOUR = T.HOUR
ORDER BY HOUR
;
반응형