Post

[Programmers] 59413번 - 입양 시각 구하기(2) [MySQL]

[Programmers] 59413번 - 입양 시각 구하기(2) [MySQL]

문제 링크


1. 문제 풀이


WITH RECURSIVE를 활용해서 해결했다. 0부터 23까지를 행으로 갖는 가상 테이블을 만들고 이를 ANIMAL_OUTSLEFT JOIN 해줬다.


2. 쿼리


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
WITH RECURSIVE hours AS (
    SELECT 0 AS HOUR
    UNION ALL
    SELECT HOUR + 1
    FROM hours
    WHERE HOUR < 23
)

SELECT
    h.HOUR,
    COUNT(a.ANIMAL_ID)
FROM hours AS h
LEFT JOIN ANIMAL_OUTS AS a
    ON HOUR(a.DATETIME) = h.HOUR
GROUP BY h.HOUR
ORDER BY h.HOUR;

This post is licensed under CC BY 4.0 by the author.