문제:

풀이방법:

이전 입양 시각 구하기에는 테이블에 있는 시간만 해도 상관이 없었으나 이번에는 전체 시간대를 표현해야 한다. 따라서 테이블에 없는 시간들을 만들어 줘야 한다. 그래서 시간 정보를 가지고 있는 새로운 테이블을 만들어서 이와 조인해서 표현하도록 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
-- 코드를 입력하세요
SELECT H1.HOUR, IFNULL(H2.COUNT, 0)
FROM (
    SELECT 0 as HOUR
    UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 
    UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10
    UNION SELECT 11 UNION SELECT 12 UNION SELECT 13 UNION SELECT 14 UNION SELECT 15
    UNION SELECT 15 UNION SELECT 16 UNION SELECT 17 UNION SELECT 18 UNION SELECT 19
    UNION SELECT 20 UNION SELECT 21 UNION SELECT 22 UNION SELECT 23) H1
LEFT JOIN (
    SELECT HOUR(DATETIME) AS 'HOUR', COUNT(*) AS 'count'
    FROM ANIMAL_OUTS
    GROUP BY HOUR) as H2 on H1.hour = H2.hour ORDER BY H1.HOUR;
cs

문제링크:

https://programmers.co.kr/learn/courses/30/lessons/59413

+ Recent posts