SELECT O.LEV, NVL(T.COUNT, 0)
FROM (SELECT LEVEL-1 AS LEV FROM DUAL CONNECT BY LEVEL <= 24) O LEFT JOIN
(SELECT TO_CHAR(DATETIME, 'HH24') HOUR, COUNT(*) AS COUNT FROM ANIMAL_OUTS
GROUP BY TO_CHAR(DATETIME, 'HH24')
ORDER BY HOUR) T
ON O.LEV = T.HOUR
ORDER BY O.LEV