WITH RECURSIVE A AS (
    SELECT 0 AS HOUR
    UNION ALL
    SELECT 1 + A.HOUR
      FROM A
      WHERE A.HOUR < 23
     )

SELECT T2.HOUR, COUNT(T1.HOUR) AS COUNT
    FROM (SELECT DATE_FORMAT(DATETIME, '%H') AS HOUR
          FROM ANIMAL_OUTS
          ) T1
        RIGHT JOIN A T2
               ON T1.HOUR = T2.HOUR
    GROUP BY T2.HOUR
    ORDER BY T2.HOUR