SMALL
풀이
문제의 접근법은 0~23을 가지고 있는 다른 테이블과 조인하여 값을 도출하는 개념이다.
MySQL에서는 변수를 생성하고 Oracle은 Level을 이용하여 값을 만들어준다.
--MySQL--
SET @hour := -1;
SELECT (@hour := @hour + 1) as HOUR,
(SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @hour) as COUNT
FROM ANIMAL_OUTS
WHERE @hour < 23;
--Oracle--
SELECT D.lv, NVL(E.cnt,0)
FROM
(SELECT TO_CHAR(DATETIME,'HH24') as HOUR ,COUNT(*) cnt
FROM ANIMAL_OUTS GROUP BY TO_CHAR(DATETIME,'HH24')
ORDER BY HOUR)E,
(SELECT (LEVEL-1)lv FROM dual CONNECT BY LEVEL <=24)D
WHERE D.lv = E.HOUR(+) ORDER BY D.lv
SMALL
'기록 > 알고리즘' 카테고리의 다른 글
[Programmers] [JAVA] 더 맵게 (0) | 2021.11.05 |
---|---|
[프로그래머스] 모의고사 (0) | 2021.10.06 |
[SQL] [프로그래머스] 입양 시각 구하기(1) (0) | 2021.08.28 |
[SQL] [프로그래머스] 중복 제거하기 (0) | 2021.08.28 |
[프로그래머스] 타겟 넘버 (0) | 2021.04.03 |