Q. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.


SELECT HOUR(AO.DATETIME) HOUR, COUNT(DISTINCT AO.ANIMAL_ID) COUNT
FROM ANIMAL_OUTS AO
GROUP BY HOUR
: COUNT가 0이어도 정답에서는 HOUR들이 다 나와야한다
즉, 새로운 HOUR TABLE을 만들어서 결합해야함.
이 때 사용하는 것이 CTE(Common Table Expression)
WITH RECURSIVE CTE AS(
SELECT 0 AS HOUR
UNION ALL
SELECT HOUR + 1
FROM CTE
WHERE HOUR < 23
)
SELECT CTE.HOUR, COUNT(DISTINCT ANIMAL_OUTS.ANIMAL_ID)
FROM CTE
LEFT JOIN ANIMAL_OUTS ON HOUR(ANIMAL_OUTS.DATETIME) = CTE.HOUR
GROUP BY HOUR