1. 문제 풀이 아이디어
WITH RECURSIVE
를 사용하여 0부터 23까지의 시간을 생성한 후,LEFT JOIN
을 이용해 각 시간별 입양된 동물의 수를 구해 문제를 해결한다.
2. 나의 정답 코드
WITH RECURSIVE time AS (
SELECT 0 hour
UNION ALL
SELECT hour + 1 FROM time WHERE hour < 23
)
SELECT t.hour, COUNT(a.datetime)
FROM time t
LEFT JOIN animal_outs a ON HOUR(a.datetime) = t.hour
GROUP BY t.hour;
3. 정리
WITH RECURSIVE
로 0부터 23까지의 시간을 생성한다.
LEFT JOIN
을 사용하여animal_outs
테이블의datetime
에서 시간만 추출한 값과time
테이블을 조인한다.
GROUP BY
로 각 시간별 입양된 동물의 개수를 구한다.
COUNT(a.datetime)
을 사용하여 해당 시간에 입양된 동물의 수를 계산한다.
Share article